Amazon S3 に CodeDeploy のリビジョンをプッシュする (EC2/オンプレミスのデプロイのみ)
「CodeDeploy のリビジョンを計画する」で説明されているようにリビジョンを計画して、「CodeDeploy 用のアプリケーション仕様ファイルをリビジョンに追加」で説明されているように AppSpec ファイルをリビジョンに追加したら、コンポーネントファイルをバンドルして、リビジョンを Amazon S3 にプッシュすることができます。Amazon EC2 インスタンスにデプロイする場合は、リビジョンをプッシュしたら、CodeDeploy を使用して、Amazon S3 からインスタンスへのリビジョンをデプロイできます。
注記
CodeDeploy は、GitHub にプッシュされたリビジョンのデプロイにも使用できます。詳細については、GitHub のドキュメントを参照してください。
「CodeDeploy の開始方法」で説明している AWS CLI のセットアップの指示に従っていることを前提としています。これは、後で説明する push コマンドを呼び出す場合に特に重要です。
Amazon S3 バケットがあることを確認してください。バケットの作成 の手順に従います。
Amazon EC2 インスタンスにデプロイする場合は、ターゲットの Amazon S3 バケットを作成するか、そのバケットがターゲットインスタンスと同じリージョンに存在する必要があります。例えば、米国東部 (バージニア北部) リージョンのインスタンスと米国西部 (オレゴン) リージョンの他のインスタンスにリビジョンをデプロイしたい場合は、米国東部 (バージニア北部) リージョンのバケットにリヒジョンのコピーを一つ、米国西部 (オレゴン) の別のバケットに同じリビジョンの別のコピーを持っている必要があります。このシナリオでは、両方のリージョンとバケットでリビジョンが同じであっても、米国東部 (バージニア北部) リージョンに 1 つ、米国西部 (オレゴン) リージョンに別の、2 つの別々のデプロイを作成する必要があります。
Amazon S3 バケットへのアップロードには、許可が必要です。Amazon S3 バケットポリシーで、これらのアクセス許可を指定できます。例えば、次の Amazon S3 バケットポリシーでは、ワイルドカード文字 (*) を使用すると、AWS アカウント 111122223333 は amzn-s3-demo-bucket という Amazon S3 バケットのディレクトリにファイルをアップロードすることができます。
{ "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "AWS": [ "111122223333" ] } } ] }
AWS アカウント ID を表示する方法については、「AWS アカウント IDの検索」を参照してください。
Amazon S3 バケットポリシーを生成しアタッチする方法については、「バケットポリシーの例」を参照してください。
push コマンドを呼び出すユーザーは、少なくとも、各ターゲット Amazon S3 バケットにリビジョンをアップロードするアクセス権限が必要です。例えば、次のポリシーでは、ユーザーが amzn-s3-demo-bucket という名前の Amazon S3 バケット内の任意の場所でリビジョンをアップロードできるようにします。
IAM ポリシーを作成しアタッチする方法については、「ポリシーの使用」を参照してください。
AWS CLI を使用してリビジョンをプッシュする
注記
push コマンドは、アプリケーションのアーティファクトおよび AppSpec ファイルをリビジョンにバンドルします。このリビジョンのファイル形式は、圧縮された ZIP ファイルです。AWS Lambda または Amazon ECS のデプロイでは、JSON 形式または YAML 形式の AppSpec ファイルのリビジョンを想定しているため、このコマンドは使用できません。
push コマンドを呼び出してリビジョンをバンドルしてプッシュし、デプロイします。パラメータは次のとおりです。
-
--application-name: (文字列) 必須。アプリケーションバージョンに関連付けられる CodeDeploy アプリケーションの名前。
-
--s3-location: (文字列) 必須。Amazon S3 にアップロードされるアプリケーションリビジョンの場所に関する情報。Amazon S3 バケットとキーを指定する必要があります。キーは、リビジョンの名前です。CodeDeploy はコンテンツをアップロードする前に zip 形式で圧縮します。形式
s3://を使用します。amzn-s3-demo-bucket/your-key.zip -
--ignore-hidden-files または --no-ignore-hidden-files: (プール値) オプション。
--no-ignore-hidden-filesフラグ (デフォルト) を使用して、隠しファイルをバンドルし Amazon S3 にアップロードします。隠しファイルをバンドルして Amazon S3 へアップロードしない--ignore-hidden-filesフラグを使用する。 -
--source(文字列) オプション。zip 圧縮され Amazon S3 にアップロードされる開発マシン上の、デプロイするコンテンツおよび AppSpec ファイルの場所。この場所は、現在のディレクトリに対する相対パスとして指定されます。相対パスが指定されていない場合、または 1 つのピリオド (「.」) がパスとして使用される場合、現在のディレクトリが使用されます。
-
--description(文字列) オプション。アプリケーションリビジョンを要約したコメントです。指定しない場合、デフォルトの文字列「Uploaded by AWS CLI 'time' UTC」が使用され、「time」は、協定世界時 (UTC) での現在のシステム時刻となります。
AWS CLI を使用して、Amazon EC2 のデプロイ用にリビジョンをプッシュできます。プッシュコマンドの例は、次のようになります。
Linux、macOS、または Unix の場合:
aws deploy push \ --application-name WordPress_App \ --description "This is a revision for the application WordPress_App" \ --ignore-hidden-files \ --s3-location s3://amzn-s3-demo-bucket/WordPressApp.zip \ --source .
Windows の場合:
aws deploy push --application-name WordPress_App --description "This is a revision for the application WordPress_App" --ignore-hidden-files --s3-location s3://amzn-s3-demo-bucket/WordPressApp.zip --source .
このコマンドは次のことを行います。
-
バンドルされたファイルを
WordPress_Appという名前のアプリケーションに関連付けます。 -
リビジョンに説明をアタッチします。
-
隠しファイルを無視します。
-
リビジョンに
WordPressApp.zipという名前を付け、amzn-s3-demo-bucketというバケットにプッシュします。 -
ルートディレクトリ内のすべてのファイルをリビジョンにバンドルします。
プッシュが成功したら、AWS CLI または CodeDeploy コンソールを使用して、Amazon S3 からリビジョンをデプロイできます。AWS CLI でこのリビジョンをデプロイするには:
Linux、macOS、または Unix の場合:
aws deploy create-deployment \ --application-name WordPress_App \ --deployment-config-nameyour-deployment-config-name\ --deployment-group-nameyour-deployment-group-name\ --s3-location bucket=amzn-s3-demo-bucket,key=WordPressApp.zip,bundleType=zip
Windows の場合:
aws deploy create-deployment --application-name WordPress_App --deployment-config-nameyour-deployment-config-name--deployment-group-nameyour-deployment-group-name--s3-location bucket=amzn-s3-demo-bucket,key=WordPressApp.zip,bundleType=zip
詳細については、「CodeDeploy でデプロイを作成する」を参照してください。