1. ikeisuke

    Posted

    ikeisuke
Changes in title
+aws cloudformation package コマンドで自動的にS3にアップロードしてくれるリソース一覧
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,82 @@
+
+SAMでの利用がメインとなる`aws cloudformation package`コマンドですが、実は他にも色々なリソースをS3に自動アップロードしてくれます。
+
+すぐ忘れてしまうので自分用メモということで以下にまとめておきます。
+
+
+# TL;DR
+
+後で書く
+
+# 対称読者
+
+CloudFormationを利用してテンプレート以外のリソースをデプロイしている(したい)人
+
+# 何ができる?
+
+`aws cloudformation package`コマンドを利用するとテンプレート外のリソース(プログラムコード、ネストしているテンプレート、Swagger定義ファイル)をアップロードしてくれる
+
+# 対応表
+
+| Type | Property | Zip |
+|---|---|---|
+| AWS::Serverless::Function | CodeUri | true |
+| AWS::Serverless::Api | DefinitionUri | false |
+| AWS::ApiGateway::RestApi | BodyS3Location | false |
+| AWS::Lambda::Function |Code | true |
+| AWS::ElasticBeanstalk::ApplicationVersion | SourceBundle | true |
+| AWS::CloudFormation::Stack | TemplateURL | false |
+
+
+Type: CloudFormationテンプレートのリソースのタイプ
+Property: CloudFormationテンプレートの対象タイプのプロパティ名
+Zip: アップロード時にzip圧縮するかどうか
+
+# 例
+
+以下のようにテンプレートからの相対パスで記述する
+
+```yaml:sample.yml
+AWSTemplateFormatVersion: 2010-09-09
+Transform: AWS::Serverless-2016-10-31
+Description: The AWS CloudFormation template for BSE Workflow
+Resources:
+ MyLambdaFunction:
+ Type: AWS::Serverless::Function
+ Properties:
+ CodeUri: ./code
+ ...
+```
+
+
+
+```bash
+$ aws cloudformation package \
+ --s3-bucket [BucketName] \
+ --s3-prefix [Prefix] \
+ --template-file template.yml \
+ --output-template-file .template.yml
+$ cat .template.yml
+AWSTemplateFormatVersion: 2010-09-09
+Transform: AWS::Serverless-2016-10-31
+Description: The AWS CloudFormation template for BSE Workflow
+Resources:
+ MyLambdaFunction:
+ Type: AWS::Serverless::Function
+ Properties:
+ CodeUri: s3://[BucketName]/[Prefix]/[ファイルのハッシュ値]
+ ...
+```
+
+※ --s3-prefixを指定しない場合はトップレベルにアップロードされる
+※ --output-template-fileを指定しない場合は標準出力に出力される
+
+# 参考
+
+- [対称部分のソースコード](https://github.com/aws/aws-cli/blob/master/awscli/customizations/cloudformation/artifact_exporter.py)
+- [How to create serverless applications using AWS SAM](https://github.com/awslabs/serverless-application-model/blob/master/HOWTO.md)
+
+
+# あとがき
+
+