CodeDeploy のリビジョンを Amazon S3 にプッシュする (EC2/オンプレミス デプロイのみ) - AWS CodeDeploy

CodeDeploy のリビジョンを Amazon S3 にプッシュする (EC2/オンプレミス デプロイのみ)

CodeDeploy のリビジョンの計画」で説明されているようにリビジョンを計画して、「アプリケーション仕様ファイルを CodeDeploy のリビジョンに追加する」で説明されているように AppSpec file をリビジョンに追加したら、コンポーネントファイルをバンドルして、リビジョンを Amazon S3 にプッシュすることができます。Amazon EC2 インスタンスにデプロイする場合は、リビジョンをプッシュしたら、CodeDeploy を使用して、Amazon S3 からインスタンスへのリビジョンをデプロイできます。

注記

CodeDeploy は GitHub にプッシュされたリビジョンのデプロイにも使用できます。詳細については、GitHub のドキュメントを参照してください。

CodeDeploy の開始方法」で説明している AWS CLI のセットアップの指示に従っていることを前提としています。これは、後で説明する push コマンドを呼び出す場合に特に重要です。

Amazon S3 バケットがあることを確認してください。「バケットの作成」の手順に従います。

Amazon EC2 インスタンスにデプロイする場合は、ターゲットの Amazon S3 バケットを作成するか、そのバケットがターゲットインスタンスと同じリージョンに存在する必要があります。たとえば、米国東部 (バージニア北部) リージョン のインスタンスにリビジョンをデプロイをするときに、他のインスタンスが 米国西部 (オレゴン) リージョン にある場合は、米国東部 (バージニア北部) リージョン にリビジョンのコピーのあるバケット、米国西部 (オレゴン) リージョン に同じリビジョンの別のコピーのある別のバケットが必要です。このシナリオでは、両方のリージョンとバケットでリビジョンが同じであっても、米国東部 (バージニア北部) リージョン に 1 つ、米国西部 (オレゴン) リージョン に別の 1 つと、2 つの別個のデプロイを作成する必要があります。

Amazon S3 バケットに対するアップロードのアクセス許可が必要です。Amazon S3 バケットポリシーを通じてこれらのアクセス許可を指定できます。たとえば、次の Amazon S3 バケットポリシーでは、ワイルドカード (*) を使用することで、AWS アカウント 111122223333 が、codedeploydemobucket という名前の Amazon S3 バケット内の任意のディレクトリにファイルをアップロードできます。

{ "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "111122223333" ] } } ] }

AWS アカウント ID を表示する方法については、「AWS アカウント ID の確認」を参照してください。

Amazon S3 バケットポリシーを生成してアタッチする方法については、「バケットポリシーの例」を参照してください。

push コマンドを呼び出す IAM ユーザーは、少なくとも、各ターゲット Amazon S3 バケットにリビジョンをアップロードするアクセス権限が必要です。たとえば、次のポリシーでは、IAM ユーザーが codedeploydemobucket という名前の Amazon S3 バケット内の任意の場所でリビジョンをアップロードできるようにします。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::codedeploydemobucket/*" } ] }

IAM ポリシーを作成してアタッチする方法については、「ポリシーの使用」を参照してください。

AWS CLI を使用してリビジョンをプッシュする

注記

push コマンドは、アプリケーションのアーティファクトおよび AppSpec file をリビジョンにバンドルします。このリビジョンのファイル形式は、圧縮された ZIP ファイルです。このコマンドは、AWS Lambda または Amazon ECS デプロイでは使用できません。これらは JSON 形式または YAML 形式の AppSpec file のリビジョンを想定しているためです。

push コマンドを呼び出してリビジョンをバンドルしてプッシュし、デプロイします。パラメータは次のとおりです。

  • --application-name: (文字列) 必須。アプリケーションバージョンに関連付けられる CodeDeploy アプリケーションの名前。

  • --s3-location: (文字列) 必須。Amazon S3 にアップロードされるアプリケーションリビジョンの場所に関する情報。Amazon S3 バケットとキーを指定する必要があります。このキーはリビジョンの名前です。CodeDeploy はこれをアップロードする前に、内容を圧縮します。s3://your-S3-bucket-name/your-key.zip の形式を使用します。

  • --ignore-hidden-files または --no-ignore-hidden-files: (プール値) オプション。--no-ignore-hidden-files フラグ (デフォルト) を使用して、隠しファイルをバンドルし Amazon S3 にアップロードします。--ignore-hidden-files フラグを使用すると、隠しファイルをバンドルおよび Amazon S3 にアップロードしません。

  • --source(文字列) オプション。zip 圧縮され Amazon S3 にアップロードされる開発マシン上の、デプロイするコンテンツおよび AppSpec file の場所。この場所は、現在のディレクトリに対する相対パスとして指定されます。相対パスが指定されていない場合、または 1 つのピリオド (「.」) がパスとして使用される場合、現在のディレクトリが使用されます。

  • --description(文字列) オプション。アプリケーションリビジョンを要約したコメントです。指定しない場合、デフォルトの文字列「Uploaded by AWS CLI 'time' UTC」が使用されます。ここで「time」は、現在のシステム時刻 (協定世界時 (UTC)) です。

AWS CLI を使用して、Amazon EC2 のデプロイ用にリビジョンをプッシュできます。プッシュコマンドの例は、次のようになります。

Linux, macOS, or Unix の場合

aws deploy push \ --application-name WordPress_App \ --description "This is a revision for the application WordPress_App" \ --ignore-hidden-files \ --s3-location s3://codedeploydemobucket/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://codedeploydemobucket/WordPressApp.zip --source .

このコマンドは次のことを行います。

  • バンドルされたファイルを WordPress_App という名前のアプリケーションに関連付けます。

  • リビジョンに説明をアタッチします。

  • 隠しファイルを無視します。

  • リビジョンに WordPressApp.zip という名前を付け、codedeploydemobucket というバケットにプッシュします。

  • ルートディレクトリ内のすべてのファイルをリビジョンにバンドルします。

プッシュが成功したら、AWS CLI または CodeDeploy コンソールを使用して、Amazon S3 からリビジョンをデプロイできます。AWS CLI でこのリビジョンをデプロイするには:

Linux, macOS, or Unix の場合

aws deploy create-deployment \ --application-name WordPress_App \ --deployment-config-name your-deployment-config-name \ --deployment-group-name your-deployment-group-name \ --s3-location bucket=codedeploydemobucket,key=WordPressApp.zip,bundleType=zip

Windows の場合:

aws deploy create-deployment --application-name WordPress_App --deployment-config-name your-deployment-config-name --your-deployment-group-name your-deployment-group-name --s3-location bucket=codedeploydemobucket,key=WordPressApp.zip,bundleType=zip

詳細については、「を使用してデプロイを作成するCodeDeploy」を参照してください。