CloudFormation에서 스택을 만들려고 하면 "Encountered unsupported property"가 됩니다.
5265 단어 CloudFormationaws-cliAWS
사건
lambda.yml
Resources:
DemoFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: demo_func
Code:
ZipFile: |
import json
def lambda_handler(event, context):
jsn_str = json.dumps(event, ensure_ascii=False)
print(jsn_str)
Handler: lambda_function.lambda_handler
MemorySize: 128
Timeout: 30
Role: !Sub arn:aws:iam::${AWS::AccountId}:role/Lambda_Basic_Role
Runtime: python3.7
Events:
Stream:
Type: DynamoDB
Properties:
Stream:
Fn::ImportValue: demoTableStream
StartingPosition: LATEST
BatchSize: 1
AWS CLI에서
create-stack
명령을 사용하여 위의 템플릿 lambda.yml
를 기반으로 DynamoDB Stream을 트리거하는 Lambda Function을 만들려고했습니다.$ aws cloudformation create-stack \
--stack-name demo-lambda \
--template-body file://lambda.yml
그러나 아래와 같이
Encountered unsupported property Events
라는 에러가 되어 스택의 작성이 실패한다.해결
CloudFormation 템플릿에서는
Type: AWS::Lambda::Function
에서는 Events
라는 속성을 사용할 수 없었습니다. Lambda의 DynamoDB Stream 트리거를 템플릿으로 정의하는 경우는 아래와 같이 AWS::Lambda::EventSourceMapping
리소스를 사용할 필요가 있었다.lambda.yml
Resources:
DemoFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: demo_func
Code:
ZipFile: |
import json
def lambda_handler(event, context):
jsn_str = json.dumps(event, ensure_ascii=False)
print(jsn_str)
Handler: index.lambda_handler
MemorySize: 128
Timeout: 30
Role: !Sub arn:aws:iam::${AWS::AccountId}:role/Lambda_Basic_Role
Runtime: python3.7
EventMapping:
Type: AWS::Lambda::EventSourceMapping
Properties:
EventSourceArn: !ImportValue demoTableStream
FunctionName: !Ref DemoFunction
StartingPosition: LATEST
결론
AWS SAM의 yml 템플릿을 일반 CloudFormation 템플릿에 유용했기 때문에 사용할 수 없는 속성이 혼란스러웠던 것이 근본 원인이었다.
이상
Reference
이 문제에 관하여(CloudFormation에서 스택을 만들려고 하면 "Encountered unsupported property"가 됩니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/r-wakatsuki/items/5c9025230469048a4dc4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)