翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
S3 バケットへのローカルアーティファクトのアップロード
Amazon S3 の場所 (バケット名およびファイル名) を必要とする一部のリソースプロパティに、代わりにローカルのリファレンスを指定できます。例えば、AWS Lambda 関数のソースコードの S3 の場所や Amazon API Gateway REST API の OpenAPI (以前の Swagger) ファイルを指定できます。ファイルを手動で S3 バケットにアップロードしてからテンプレートに場所を追加する代わりに、ローカルアーティファクトと呼ばれるローカルリファレンスをテンプレート内で指定し、package
コマンドを使用してすばやくアップロードできます。ローカルアーティファクトは、package
コマンドが Amazon S3 にアップロードしたファイルまたはフォルダへのパスです。例えば、アーティファクトは AWS Lambda 関数のソースコードへのローカルパスであったり、Amazon API Gateway REST API の OpenAPI ファイルであったりします。
ファイルを指定する場合、コマンドはそれを S3 バケットに直接アップロードします。アーティファクトをアップロードしたら、コマンドはテンプレートのコピーを返します。その中で、ローカルアーティファクトへの参照は、コマンドがアーティファクトをアップロードした S3 の場所に置き換えられます。その後、返されたテンプレートを使用してスタックを作成または更新できます。
フォルダを指定すると、コマンドはフォルダの .zip ファイルを作成し、その .zip ファイルをアップロードします。パスを指定しない場合、コマンドは作業ディレクトリの .zip ファイルを作成し、アップロードします。絶対パスまたは相対パスを指定できます。相対パスはテンプレートの場所からの相対です。
ローカルアーティファクトは、package
コマンドがサポートするリソースプロパティにのみ使用できます。このコマンドの詳細とサポートされているリソースプロパティのリストについては、『コマンドリファレンス』aws cloudformation package
AWS CLIのコマンドを参照してください。
以下のテンプレートは Lambda 関数のソースコードのローカルアーティファクトを指定します。ソースコードはユーザーの /home/user/code/lambdafunction
フォルダに保存されています。
元のテンプレート
{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Resources": { "MyFunction": { "Type": "AWS::Serverless::Function", "Properties": { "Handler": "index.handler", "Runtime": "nodejs18.x", "CodeUri": "/home/user/code/lambdafunction" } } } }
次のコマンドは、関数のソースコードフォルダを含む .zip ファイルを作成してから、my-bucket
バケットのルートフォルダにその .zip ファイルをアップロードします。
パッケージコマンド
aws cloudformation package \ --template /path_to_template/template.json \ --s3-bucket mybucket \ --output-template-file packaged-template.json \ --use-json
このコマンドは、生成したテンプレートを --output
オプションで指定されたパスに保存します。このコマンドは、次に示す例のように、Amazon S3 の場所であるアーティファクトを置き換えます。
作成されるテンプレート
{
"AWSTemplateFormatVersion": "2010-09-09",
"Transform": "AWS::Serverless-2016-10-31",
"Resources": {
"MyFunction": {
"Type": "AWS::Serverless::Function",
"Properties": {
"Handler": "index.handler",
"Runtime": "nodejs18.x",
"CodeUri": "s3://mybucket/<md5 checksum>
"
}
}
}
}