AWS Certified Developer - Associateを受験したときに勉強したメモを供養する。
勉強方法
DVA-C02が2023年2月末から始まるけど、多分内容はほぼ同じだとおもう。
- ポケットスタディ AWS認定 デベロッパーアソシエイト (アソシエイト試験ポケットスタディ) | 山下光洋 |本 | 通販 | Amazon
- AWS 認定デベロッパー アソシエイト模擬試験問題集(5回分325問) | Udemy
ポケットスタディを1周読んで付随していた問題集を解いた。 付随のものだと簡単すぎで実際の試験には太刀打ちできないと聞いていたので、評価が高いUdemyの問題集を2周ほど解いた。
わからない部分はポケットスタディに戻ったり、公式サイトやらDeveloperIOやらその他サイトを参考にまとめていったりした(下はその時のメモを少し見やすくしたもの)。
勉強メモ
上記のポケットスタディや問題集、その他参考サイトの文言をそのまま引用している部分があるので注意。 確認取れたものは引用を付けているが漏れがあるかも。。。
ファイル
コマンド
AWS SAM
- sam init: 初期処理。テンプレート作成。
- sam package: パッケージ化。コードと依存関係のzipファイルを作成、S3にアップロード、デプロイするために修正済のテンプレート(コードの参照先を置換したもの)を返す(古いチュートリアル等では実行しているケースもあるが、現在sam deployコマンドに含まれている)
- sam build: Lambdaにデプロイする準備(ローカルで前処理する)
- sam deploy: AWSリソースを構築(CFnを利用)
- sam delete: AWSリソースを削除
- sam publish: AWS SAM アプリケーションを AWS Serverless Application Repository に公開
- sam validate: テンプレート検証
単純なデプロイであれば、sam init → sam build → sam deploy
AWS SAM CLI コマンドリファレンス - AWS Serverless Application Model
AWS Elastic Beanstalk
- eb init: アプリケーション作成(設定ファイル作成)
- eb create: アプリケーション環境作成
- eb deploy: 環境の更新デプロイ
ロール付与
参考サイト: STSの一時的な認証情報取得APIコールについてまとめてみる - サーバーワークスエンジニアブログ
AssumeRole
IAM Userの長期的なセキュリティ認証情報から、IAM Roleの一時的なセキュリティ認証情報を発行するAPIリクエストです。
例: IAMユーザに与えられていないポリシー権限でAWSリソースにアクセスしたいとき。SwitchRoleのとき。
IAMロールの一時的なセキュリティ認証情報が得られる。アプリケーション上でIAMロール権限を利用した一時認証を発行するにはAssumeRoleのAPIコールを利用する。アプリケーションの認証機能において、AWS STS のAssumeRole APIオペレーションを呼び出すことで適切なロールのARNを渡します。このロールによって、一時的な資格情報によるセッションが作成されます。
有効期限は最大1時間。
GetSessionToken
IAM Userの長期的なセキュリティ認証情報から、IAM Userの一時的なセキュリティ認証情報を発行するAPIリクエストです。
例: 信頼されていない環境からIAM Userでアクセスする時
GetSessionToken API では、既存のIAMユーザーに一時的セキュリティ認証情報が得られる。この API コールはMFA が IAM ユーザーに対して有効なときにリクエストを作成する際など、セキュリティを強化するために役立つ。
有効期限は最大36時間(デフォルト12時間)。
インスタンスプロファイル、インスタンスメタデータ、ユーザデータ
似ているけどぜんぜん違うのでまとめて書く。
参考サイト: インスタンスメタデータとユーザーデータ - Amazon Elastic Compute Cloud
インスタンスプロファイル
インスタンスプロファイルを使用して、IAMロールを EC2インスタンスに渡す(EC2インスタンスにIAMロールのインスタンスプロファイルがアタッチされる必要がある)。 IAMロールを使用するEC2インスタンスで実行されるアプリケーションにアクセス許可を与えるには、EC2インスタンスにそのIAMロールのインスタンスプロファイルを作成し、アタッチする必要がある。
使い方
- AWS CLI設定ファイルでロールのインスタンスプロファイルを作成する。
- CLIでコマンドを実行するさいに、
--profile
パラメータを使ってプロファイル名を指定することでロールを切り替えてコマンドの実行が可能。
インスタンスメタデータ
インスタンスメタデータは実行中のEC2インスタンスから取得できる。 取得には以下のURIを利用する。Amazon EC2 コンソールまたは AWS CLI を使用する必要はない。
IP アドレス 169.254.169.254 は、リンクローカルアドレスとなっておりインスタンスからのみ有効です。したがって、CurlまたはGetコマンドを利用して、169.254.169.254/latest/meta-data/から直近のメタデータを取得することができます。
リンクローカルアドレス(169.254.xxx.xxx)とは - 意味をわかりやすく - IT用語辞典 e-Words
リンクローカルアドレスとは、特殊なIPアドレスの一種で、自らの所属するネットワーク領域(セグメント)でのみ通信が可能なアドレス。 IPv4では「169.254.」で始まるアドレス領域(169.254.0.0~169.254.255.255)が、IPv6では「fe80:0:0:0:」で始まる領域(fe80::/64)が、リンクローカルアドレス用に予約されている。ルータなどの機器はこのアドレスからのデータを他のネットワークに転送できない。
ユーザデータ
ユーザーデータはAmazon EC2でインスタンスを起動するときに渡され、スクリプトを実行することができる。
例えば、インスタンスを設定するためにパラメータを指定したり、単純なスクリプトを含めたりすることができます。汎用 AMI をビルドし、ユーザーデータを使って起動時に提供された設定ファイルを変更することができます。
デプロイ戦略
Elastic Beanstalk
参考サイト: AWS Elastic Beanstalkで使えるデプロイポリシーを理解する | DevelopersIO
All at Once
新しいバージョンをすべてのインスタンスに同時に展開する。 短時間ダウンタイムが発生するが、デプロイ完了は最も早い。
Rolling
インスタンスを複数のバッチに分割し、バッチごとに新しいバージョンに展開していく。 デプロイ中は新しいバージョンと古いバージョンの両方が存在する状態で処理が実行される。
Rolling with additional batch
インスタンスを複数のバッチに分割し、バッチごとに新しいバージョンに展開していくのはローリングと同じ。 ただし、新しいインスタンスを追加してデプロイを実行する。よってデプロイ中のキャパシティ(処理能力)は低下しない。
Immutable
古いバージョンのインスタンスとは別に、新しいAuto Scalingグループを作成し、そこで新しいバージョンの新しいインスタンスを起動する。 デプロイ中のキャパシティ(処理能力)は低下しない。Immutableデプロイは、ローリングデプロイにより発生する問題を防止できます。新しいインスタンスがヘルスチェックをパスしなかった場合、Elastic Beanstalkはそれを終了、元のインスタンスをそのまま残す。
CodeDeploy
参考サイト: CodeDeployでのデプロイグループの使用 - AWS CodeDeploy
インプレースデプロイ
デプロイグループの各インスタンスのアプリケーションが停止され、最新のアプリケーションリビジョンがインストールされて、新バージョンのアプリケーションが開始され検証されます。ロードバランサーを使用し、デプロイ中はインスタンスが登録解除され、デプロイ完了後にサービスに復元されるようにできます。EC2/オンプレミスコンピューティングプラットフォームを使用するデプロイのみが、インプレースデプロイを使用できます。
Blue/Green デプロイ
デプロイの動作は、使用するコンピューティングプラットフォームにより異なります。
- EC2/オンプレミスコンピューティングプラットフォームのBlue/Green: 次の手順を使用して、デプロイグループのインスタンス (元の環境) を別のインスタンスのセット (置き換え先環境) に置き換えます。
- インスタンスは置き換え先環境にプロビジョニングされます。
- 最新のアプリケーションリビジョンは、置き換え先インスタンスにインストールされます。
- オプションの待機時間は、アプリケーションのテストやシステム検証などのアクティビティに対して発生します。
- 置き換え先環境のインスタンスは Elastic Load Balancing ロードバランサーに登録され、トラフィックがそれらに再ルーティングされます。元の環境のインスタンスは、登録が解除され、終了したり、他の使用のために実行し続けることができます。
Lambda
参考サイト: CodeDeploy 主なコンポーネント - AWS CodeDeploy
Canary
トラフィックは 2 回の増分で移行されます。残りのトラフィックが 2 回目の増分で移行される前に、最初の増分および間隔で更新された Lambda 関数のバージョンに移行されるトラフィックの割合 (%) を分単位で指定する、事前定義された Canary オプションから選択できます。
Linear
トラフィックは毎回同じ間隔 (分) の等しい増分で移行されます。増分ごとに移行するトラフィックの割合 (%) と、増分間の間隔 (分) を指定する、事前定義済み線形オプションから選択できます。トラフィックは毎回同じ間隔 (分) の等しい増分で移行されます。増分ごとに移行するトラフィックの割合 (%) と、増分間の間隔 (分) を指定する、事前定義済み線形オプションから選択できます。
All-at-once
すべてのトラフィックは、元の Lambda 関数から更新された Lambda 関数バージョンに一括で移行されます。
Perfect Forward Secret
Perfect Forward Secretは全てのAWSサービスで利用可能だが、ユーザ側でカスタマイズして利用できるサービスは限られており、CloudFrontとELBだけ。
PFS (Perfect Forward Secrecy)とは暗号化された通信と暗号化するための秘密鍵が両方漏洩しても複合化できないという鍵交換に関する概念です。PFSにより万が一、暗号化通信に用いる鍵が漏洩してしまった場合、キャプチャして保存していた通信内容は過去に渡って復号化されてしまう可能性があります。そこで、一時的な情報であるセッションキーを暗号化通信に利用します。これにより、万が一鍵が漏洩してしまった場合でも、通信内容が復元される可能性を低くすることができます。
CloudWatchのメトリクス
API Gateway
- 4XXError:指定された期間に取得されたクライアント側エラーの数。
- 5XXError:指定された期間に取得されたサーバー側エラーの数。
- CacheHitCount:指定された期間内に API キャッシュから配信されたリクエストの数。
- CacheMissCount:API キャッシュが有効になっている特定の期間における、バックエンドから提供されたリクエストの数。
- Count:指定された期間内の API リクエストの合計数。
- IntegrationLatency:API Gateway がバックエンドにリクエストを中継してから、レスポンスを受け取るまでの時間。
- Latency:API Gateway がクライアントからリクエストを受け取ってから、クライアントにレスポンスを返すまでの時間。
ECS
参考サイト: AWS ECSを構成する3つの概念(Cluster, Service, Task) - keroxpのScrapbox
Task(タスク)
ECSにおけるコンテナに相当する
後述のClusterを構成するノード(EC2インスタンス)上で起動する。これを「タスクを配置」と表現する。
Task Definition(タスク定義)
- Dockerコンテナの起動設定に相当する。docker-compose.ymlのようなもの。 起動するコンテナが1つでも2つでも設定ファイルは書く。
Service
- サービスは、ALBとAutoScaling Groupに紐付けられたタスク群である
- 一般的なWebサービスであれば、HTTPのポートが空いていて、デーモンとして起動しているタスクの集合のこと
- タスクはタスク単体で配置することができる
Cluster
Systems Manager vs Secrets Manager
使い分けがわからなかったので調査。
参考サイト
- よくある質問 - AWS Systems Manager | AWS
- AWSのParameter StoreとSecrets Manager、結局どちらを使えばいいのか?比較 - Qiita
- 2019年5月までは情報更新あり
- AWS Systems Manager Parameter StoreとSecrets Managerのどちらを使うべきか - s1r-Jの技術ブログ: 自分で記事にした
結論
設定とシークレットにひとつのストアが欲しい場合、パラメータストアをお使いください。ライフサイクル管理を備えたシークレット専用のストアが欲しい場合、シークレットマネージャーをお使いください。
「設定とシークレットにひとつのストアが欲しい場合」とはシークレットマネージャは利用できる場所に若干制限があるからだと思われる。
シークレットマネージャーは MySQL、PostgreSQL、Amazon Aurora on Amazon RDS への統合を組み込むことができ、これは Lambda 関数のカスタマイズで他のタイプのシークレットにも拡張できます。 Amazon ECS や AWS CloudFormation など様々な AWS サービスにわたって使用できます
詳細について
Q: Secrets Manager と Parameter Store の違いは何ですか? AWS シークレットマネージャーは、ローテーション、監査、アクセスコントロールと言った組織でのシークレットのライフサイクルを中央で管理するためのサービスです。Secrets Manager を使うと、シークレットを自動的にローテーションできるようになるので、セキュリティとコンプライアンスの要件を満たすのに役立ちます。シークレットマネージャーは MySQL、PostgreSQL、Amazon Aurora on Amazon RDS への統合を組み込むことができ、これは Lambda 関数のカスタマイズで他のタイプのシークレットにも拡張できます。
AWS Systems Manager Parameter Store には、設定データ管理のためのセキュアで、階層的なストレージがあり、これにはシークレットも含みます。データベース接続タイプ、文字列、パスワードとライセンスコードはパラメータ値として保存され、監査とアクセスコントロールが可能です。保存された値はプレーンテキストでも暗号化されたデータでも構いません。値はパラメータ固有の名前で参照できます。システムマネージャーパラメータを参照してジェネリック設定と自動化スクリプトを構築して、Amazon ECS や AWS CloudFormation など様々な AWS サービスにわたって使用できます。
Q: Parameter Store と Secrets Manager のどちらを使えば良いですか? 設定とシークレットにひとつのストアが欲しい場合、パラメータストアをお使いください。ライフサイクル管理を備えたシークレット専用のストアが欲しい場合、シークレットマネージャーをお使いください。パラメータストアは追加料金なしで、パラメータ数 10,000 個の制限でお使いいただけます。詳細については、Secrets Manager の料金ページを参照してください。
Q: Parameter Store と Secrets Manager のセキュリティモデルには違いはありますか? ありません。シークレットマネージャーとパラメータストアは両方とも同じように安全です。これらのサービスは両方ともカスタマーの所有する KMS キーを用いて保管中の暗号化をサポートしています。Parameter Store でどのように KMS を使用するかの詳細については、KMS デベロッパーガイドの Parameter Store での AWS KMS の使用方法を参照してください。
S3
- S3
- S3 Glacier
- 迅速: 1-5分で取り出し
- 標準: 3-5時間で取り出し
- 大容量: 5-12時間で取り出し
- S3 Glacier Deep Archive
- 標準: 12時間以内で取り出し
- 大容量: 48時間以内で取り出し
KMS
- CMK(Customer Master Key): データキーを暗号化するキー
- データキー: オブジェクトやインスタンスを暗号化するキー
2重の暗号化(エンベロープ暗号化)となっている。
S3の暗号化
- クライアントサイト暗号化: アップロード前に暗号化する必要があればこちら
- サーバーサイド暗号化: バケットポリシーで設定(
s3:x-amz-server-side-encryption
)- SSE-S3
- S3が管理するキーでサーバ側暗号化。キーの個別管理、監査などの要件がなければこれで良い。
s3:x-amz-server-side-encryption
でAWS256を指定した場合はこれ。
- S3が管理するキーでサーバ側暗号化。キーの個別管理、監査などの要件がなければこれで良い。
- SSE-KMS:
s3:x-amz-server-side-encryption
でaws:kms
を指定。 - SSE-C
- SSE-S3
SSE-Cでのリクエストヘッダ
ユーザが用意した暗号化キーでのサーバーサイド暗号化(SSE-C)を使用すると、独自の暗号化キーを設定できる。SSE-Cでは、以下の3つのリクエストヘッダを使用して暗号化キーの情報を指定する。
x-amz-server-side-encryption-customer-algorithm
- 暗号化アルゴリズムを指定する。ヘッダの値は
AES256
とすること。
- 暗号化アルゴリズムを指定する。ヘッダの値は
x-amz-server-side-encryption-customer-key
x-amz-server-side-encryption-customer-key-MD5
EC2などバッチジョブでKMSを使う
バッチジョブに対してデフォルトのAWS KMSキーを使用してアップロードされるデータを保護するには、アップロードリクエストにaws:kms
の値を持つx-amz-server-side-encryption
ヘッダを含める。
API Gateway
Swagger、OpenAPI
AWSコンソールでインポート機能を使って、外部の定義ファイルからREST APIをインポートできる。OpenAPI v2.0およびv3.0がサポートされている。新しい定義で上書きしてAPIを更新したり、既存のAPIと定義をマージすることが可能。
API統合タイプ
大きく分けて、2種類が存在する
- プロキシ統合: リクエスト、レスポンスのマッピング、エンコーディングなどをよきにやってくれる(形式をAPI Gatewayに合わせる)
- 非プロキシ統合(カスタム統合):自分で設定する、もしくはLambdaなどの出力をそのまま返す
使い分け
- AWSサービスアクションの場合、非プロキシタイプのAWS統合のみを使用できる。
- Lambda関数の場合は、Lambdaプロキシ統合またはLambda カスタム統合を使用できる
- HTTPエンドポイントの場合、HTTPプロキシ統合または HTTP カスタム統合を使用できる。
- API Gatewayはモック統合もサポートしている。
非プロキシ統合(カスタム統合)。 AWS統合は、APIは AWSのサービスアクションを公開する。AWS統合では、統合リクエストと統合レスポンスの両方を設定し、メソッドリクエストから統合リクエストへの、また統合レスポンスからメソッドレスポンスへの、データマッピングを設定する。
AWS_PROXY(Lambda プロキシ統合)
APIメソッドをLambda関数呼び出しアクションと統合でき、ユーザーが統合リクエストまたは統合レスポンスを設定することはない。API Gatewayは、クライアントから受け取ったリクエストをバックエンドのLambda関数への入力として渡す。
HTTP(HTTP カスタム統合)
非プロキシ統合(カスタム統合)。 HTTP統合は、API がバックエンドの HTTP エンドポイントを公開することを可能にする。統合リクエストと統合レスポンスの両方を設定する。メソッドリクエストから統合リクエストへの、また統合レスポンスからメソッドレスポンスへの、データマッピングを設定する。
HTTP_PROXY
統合リクエストまたは統合レスポンスを設定することはない。API Gatewayは、クライアントから受け取ったリクエストを HTTP エンドポイントに渡し、HTTP エンドポイントから送り出されたレスポンスをクライアントに渡す。クライアントとバックエンドがAPI Gatewayの介入なしで直接対話することができる。
MOCK API Gatewayはリクエストをバックエンドに送信することなく、レスポンスを返す。バックエンドの使用料金が発生することなく、統合設定のテストに使用したり、APIの共同開発に使用したりでき、テストに活用できる。CORSにも対応。
認証
Lambdaオーソライザーは2種類ある。
- トークンベース(トークンオーソライザー):JSONウェブトークン (JWT) や OAuthトークンなどのトークンで発信者IDを受け取る。
- リクエストパラメータベース(リクエストオーソライザー):ヘッダ、クエリ文字列パラメータ、stageVariables、および$context変数の組み合わせで、発信者IDを受け取る。
CloudFormation
関数
Fn::ImportValue
:別のスタックによってエクスポートされた出力の値を返す関数Fn::GetAtt
:は、テンプレートのリソースから属性の値を返すFn::Sub
:入力文字列にある変数の代わりになる。テンプレートで、スタックを作成または更新するまで使用できない値を含むコマンドまたは出力を作成するために使用。Fn::Ref
:指定したパラメータまたはリソースの値を返す
スタックセット
参考サイト: 【CloudFormation】StackSetsの仕組みについて - サーバーワークスエンジニアブログ
複数のアカウントおよびリージョンのスタックを1度のオペレーションで、作成、更新、削除できる機能。 CloudFormationの変更管理セットを使用して、複数のAWSアカウントやリージョンを横断したリソース展開はできない。
SAM
CloudFormationテンプレートを利用してLambda関数を利用したサーバーレスアプリケーションのインフラを展開するためには、CloudFormationテンプレートのAWS::Serverless Transform
セクションにおいて、AWS SAMのバージョンを指定する。
EC2
インスタンスメタデータ
EC2フリート
EC2フリートとは、EC2インスタンスをオンデマンド、スポット、リザーブドなどを組み合わせて目標となる容量になるようにうまいことやってくれる機能。また、上限料金を設定するとそれを超える場合にはインスタンス起動をやめる。
- 参考サイト
EC2 フリート には、インスタンスのフリート (つまり、グループ) を起動するための設定情報が含まれています。単一の API 呼び出しでは、フリートは、オンデマンドインスタンス、リザーブドインスタンス、スポットインスタンスの購入オプションを一緒に使用して、複数のアベイラビリティーゾーンにまたがって複数のインスタンスタイプを起動できます。 フリートに対する 1 時間あたりの支払い上限容量を設定し、上限料金に達するまで EC2 フリート でインスタンスを起動することもできます。支払い上限料金に達すると、ターゲット容量に満たない場合でも、フリートはインスタンスの起動を停止します。
箇条書きでまとめると、
-オンデマンドとスポットのターゲット容量を別個に定義し、さらに 1 時間あたりの支払い上限料金を定義する - アプリケーションに最適なインスタンスタイプを指定する - 各購入オプション内でフリート容量を Amazon EC2 で分散する方法を指定する
CodeStar
参考サイト: AWS CodeStar(AWS アプリケーションの開発とデプロイ)| AWS
- 継続的デリバリーのツールチェーン全体をすぐに設定できる。
- プロジェクトダッシュボードで、アプリケーションアクティビティを一元的に監視できる。
CodeDeploy
CodeDeployではフックという機能でライフサイクルイベントを設定して、デプロイ時に任意のスクリプトを実行できる
- BeforeInstall
- AfterInstall
- BeforeAllowTraffic
- AfterAllowTraffic
- ValidateService
Amazon Cognito
Amazon Cognito IDプールは、ゲストユーザ(未認証)と認証してトークンを受け取ったユーザに一時的な AWS認証情報を提供する。
- S3バケットや Amazon DynamoDB テーブルなどの AWS リソースへのアクセスをユーザーに許可する。
- 未認証ユーザ用の AWS 認証情報を一時的に生成する。
Lambda
pullモデル、pushモデル
参考サイト: Check! AWS Lambda を理解しよう ~ 2つの動作モデル (pushモデル/pullモデル) | iret.media
Pushモデル
Amazon S3でバケット通知イベントを利用してAWS Lambda関数を実行。 ユーザのアプリケーションが発行したイベントをトリガーにして、AWS Lambda 関数を実行。
Pullモデル
アプリケーションからAmazon DynamoDBストリーム、Kinesisストリームなどへイベントを発行して、AWS Lambdaはそのストリームからプル処理によってイベントを取り出し、コードを実行。
暗号化
Lambda関数の暗号化では、環境変数を使用するLambda関数を作成または更新する際に、AWS KMSの暗号化キーを適用して環境変数を暗号化する。 暗号化が実行されたLambda関数を呼び出すと、環境変数値が復号されて、Lambdaコードで利用される。
CloudFront
HTTPS接続
ビューアとCloudFront間のHTTPS
サードパーティプロバイダなどの信頼できる認証局によって発行された証明書を使用できる。また、AWS Certificate Manager(ACM)が提供する証明書も使用できる。
CloudFrontとカスタムオリジン間のHTTPS
オリジンがELBのロードバランサー以外の場合は、信頼されたサードパーティー認証機関 によって署名された証明書を使用する必要がある。
Route53
Route53の地理的近接性ルーティングでは、Amazon Route 53 はユーザーとリソースの地理的場所に基づいてリソースのトラフィックをルーティングします。また、必要に応じて特定のリソースにルーティングするトラフィックの量を変更できます。
地理的近接性ルーティングを使用するにはRoute 53トラフィックフローを設定する必要がある。
X-Ray
AWS_XRAY_DAEMON_ADDRESS
環境変数: デーモンがECSで正しく検出されるようにするために、AWS X-Ray SDKにおいてを設定する。AWS_XRAY_CONTEXT_MISSING
: 実装されたコードが、セグメントが開いていないときにデータを記録しようとした場合に例外のスローを回避するように設定する。実行時例外を投げる、エラーを記録して続行など。AWS_XRAY_DEBUG_MODE
: debugレベルでコンソールにログを出力する。
インスタンスプロファイルを使用して、トレースデータをX-Rayにアップロードするポリシー権限をデーモンに付与する。
SQS
メッセージのサイズが 256 KB を超える場合、Amazon SQS拡張クライアントライブラリを利用し、Amazon S3 バケットにメッセージを保存することができる。
CloudSearch
参考サイト: Amazon CloudSearch(マネージド型検索サービス)| AWS
Amazon CloudSearchは AWS クラウドにおけるマネージド型サービスであり、ウェブサイトまたはアプリケーション向けの検索ソリューションを容易かつコスト効率良く設定、管理、スケールできます。
OpsWorks
スタック
スタックは AWS OpsWorks スタックの中心となるコンポーネントです。これは基本的に AWS リソース (Amazon EC2 インスタンス、Amazon RDS データベースインスタンスなど) 用のコンテナです。
レシピ
レシピは、システムの設定を定義する Ruby アプリケーションです。これを使用して、パッケージのインストール、テンプレートからの設定ファイルの作成、シェルコマンドの実行、ファイルとディレクトリの作成などを行います。
レイヤー
各スタックには、ロードバランサーや一連のアプリケーションサーバーなどのスタックコンポーネントを表す Layer が少なくとも 1 つ含まれます。AWS OpsWorks スタックレイヤーを使用する場合は、次の点に注意してください。