AWS CloudFormation
ユーザーガイド (API バージョン 2010-05-15)

AWS::Serverless 変換

AWS CloudFormation によってホストされるマクロである AWS::Serverless 変換は、AWS Serverless Application Model (AWS SAM) 構文で記述されたテンプレート全体を受け取り、それを準拠した AWS CloudFormation テンプレートに変換および拡張します。サーバーレスアプリケーションおよび AWS SAM の詳細については、AWS Lambda Developer Guide の「Lambda ベースのアプリケーションをデプロイする」を参照してください。

カスタムマクロとは異なり、AWS::Serverless 変換は、AWS CloudFormation によってホストされているため、使用するための特別な権限は必要ありません。AWS CloudFormation 内の任意のアカウントのテンプレートで使用できます。また、この変換を使用しても無料です。AWS CloudFormation は、評価の順序と範囲の点で AWS::Serverless 変換を他のマクロと同じように扱います。マクロの詳細については、AWS CloudFormation マクロを使用したテンプレートのカスタム処理の実行 を参照してください。

次の例では、テンプレートは AWS SAM 構文を使用して Lambda 関数とその実行ロールの宣言を簡素化しています。

Transform: AWS::Serverless-2016-10-31 Resources: MyServerlessFunctionLogicalID: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs8.10 CodeUri: 's3://testBucket/mySourceCode.zip'

テンプレートから変更セットを作成すると、AWS CloudFormation はトランスフォームの定義に従って AWS SAM 構文を拡張します。処理されたテンプレートは、AWS Lambda 関数および実行ロールが宣言された AWS::Serverless::Function リソースを展開します。

{ "Resources": { "MyServerlessFunctionLogicalID": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "index.handler", "Code": { "S3Bucket": "testBucket", "S3Key": "mySourceCode.zip" }, "Role": { "Fn::GetAtt": ["FunctionNameRole", "Arn"] }, "Runtime": "nodejs8.10" } }, "FunctionNameRole": { "Type": "AWS::IAM::Role", "Properties": { "ManagedPolicyArns": ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"], "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Action": ["sts:AssumeRole"], "Effect": "Allow", "Principal": { "Service": ["lambda.amazonaws.com"] } }] } } } } }

構文

変換の宣言の値には、リテラル文字列である必要があります。変換値の指定には、パラメーターまたは関数は使用できません。次のスニペットは、変換の宣言の例です。

JSON

"Transform" : "AWS::Serverless-2016-10-31"

YAML

Transform: "AWS::Serverless-2016-10-31"

このページの内容: