CloudFormation으로 CloudWatch Events 및 Lambda 구축
17937 단어 CloudFormationCloudWatchEvents람다AWS
CloudFormation 개요
망비록적으로 기재 하겠습니다.
JSON 파일이나 YAML 파일에 구축하고 싶은 AWS 서비스의 설정 항목을 기재해,
CloudFormation에 로드하게 하는 것으로 기재한 서비스의 구축을 자동화할 수 있다.
■ 공식 링크
공식 페이지
블랙 벨트
건설
구성
EC2라면 바로 검색할 수 있을까 생각하기 때문에,
지난 기사의 CloudWatch Events와 Lambda가 연동하는 부분을 구축합니다.
※Lambda의 코드도 전회의 기사를 참조를 부탁드립니다.
【전회:AWS Config의 통지 내용을 Lambda로 성형】
CloudFormation
템플릿
CloudFormation 매개 변수는 Lambda에 전달하기위한 것입니다.
AWSTemplateFormatVersion: 2010-09-09
Description: CFn test
Parameters:
変数名:CloudFormationで使用できる変数
Type: String
Description:(変数の説明文)
S3Name:
Type: String
ZipF:
Type: String
P3Handler:
Type: String
Resources:
以下AWSサービスの内容
이번 파라미터의 의도
Lambda의 코드는 YAML 파일에 직접 쓰지 않고 S3에 저장하고 그것을 참조시킵니다.
구성
EC2라면 바로 검색할 수 있을까 생각하기 때문에,
지난 기사의 CloudWatch Events와 Lambda가 연동하는 부분을 구축합니다.
※Lambda의 코드도 전회의 기사를 참조를 부탁드립니다.
【전회:AWS Config의 통지 내용을 Lambda로 성형】
CloudFormation
템플릿
CloudFormation 매개 변수는 Lambda에 전달하기위한 것입니다.
AWSTemplateFormatVersion: 2010-09-09
Description: CFn test
Parameters:
変数名:CloudFormationで使用できる変数
Type: String
Description:(変数の説明文)
S3Name:
Type: String
ZipF:
Type: String
P3Handler:
Type: String
Resources:
以下AWSサービスの内容
이번 파라미터의 의도
Lambda의 코드는 YAML 파일에 직접 쓰지 않고 S3에 저장하고 그것을 참조시킵니다.
CloudWatch 이벤트
YAML 파일의 내용
내용은 GUI에서 Events의 규칙을 작성하면 이벤트 패턴을 열람할 수 있기 때문에,
실제로 작성하고 싶은 이벤트를 손으로 설정해 보면 참고가 됩니다.
IAM 설정 변경 감지
EventRule:
Type: 'AWS::Events::Rule'
Properties:
Description: EventRule
EventPattern:
source:
- aws.config
detail-type:
- Config Configuration Item Change
detail:
configurationItem:
resourceType:
- 'AWS::IAM::User'
- 'AWS::IAM::Group'
- 'AWS::IAM::Role'
- 'AWS::IAM::Policy'
State: ENABLED
Targets:
- Arn: !GetAtt
- LambdaTestFunction
- Arn
Id: TargetFunctionV1
DependsOn:
- LambdaTestFunction
규칙 준수 및 비준수 감지
EventRule:
Type: 'AWS::Events::Rule'
Properties:
Description: EventRule
EventPattern:
source:
- aws.config
detail-type:
- Config Rules Compliance Change
State: ENABLED
Targets:
- Arn: !GetAtt
- LambdaTestFunction
- Arn
Id: TargetFunctionV1
DependsOn:
- LambdaTestFunction
항목 보충
resourceType: IAM의 항목을 기재해, IAM의 설정 변경을 통지 대상으로 한다.
Targets : CloudWatch Events와 연관된 Lambda 설명
공식 참고 문서
CloudWatch Events에 Lambda 역할 부여
PermissionForEventsToInvokeLambda:
Type: 'AWS::Lambda::Permission'
Properties:
FunctionName: !Ref LambdaTestFunction
Action: 'lambda:InvokeFunction'
Principal: events.amazonaws.com
SourceArn: !GetAtt
- EventRule
- Arn
공식 참고 문서
람다
LambdaTestFunction:
Type: 'AWS::Lambda::Function'
Properties:
Code:
S3Bucket: !Ref S3Name
S3Key: !Ref ZipF
Environment:
Variables:
FunctionName: Config-item-change-test
Handler: P3Handler.lambda_handler
Runtime: python3.6
Timeout: '3'
Role: !GetAtt
- LambdaExecutionRole
- Arn
항목 보충
공식 참고 문서
이번에 작성한 Lambda용 Policy 작성 및 부여
LambdaExecutionRole:
Type: 'AWS::IAM::Role'
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Action:
- 'sts:AssumeRole'
Path: /
Policies:
- PolicyName: lambdatest
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- 'logs:CreateLogGroup'
- 'logs:CreateLogStream'
- 'logs:PutLogEvents'
- 's3:PutAnalyticsConfiguration'
- 's3:PutAccelerateConfiguration'
- 's3:ReplicateObject'
- 's3:PutEncryptionConfiguration'
- 's3:PutBucketTagging'
- 's3:PutLifecycleConfiguration'
- 's3:PutObjectTagging'
- 's3:PutBucketVersioning'
- 's3:PutMetricsConfiguration'
- 's3:PutReplicationConfiguration'
- 's3:PutObjectVersionTagging'
- 's3:PutBucketCORS'
- 's3:PutInventoryConfiguration'
- 's3:PutObject'
- 's3:PutBucketNotification'
- 's3:PutBucketWebsite'
- 's3:PutBucketRequestPayment'
- 's3:PutBucketLogging'
- 's3:ListBucket'
- 'sns:Publish'
Resource:
- '*'
공식 참고 문서
모든 것을 하나로 결합
템플릿의 "Resources :"에서 다음 줄로 들여 쓰고 붙여 넣습니다.
AWSTemplateFormatVersion: 2010-09-09
Description: CFn test
Parameters:
S3Name:
Type: String
ZipF:
Type: String
P3Handler:
Type: String
Resources:
LambdaTestFunction:
Type: 'AWS::Lambda::Function'
Properties:
Code:
S3Bucket: !Ref S3Name
S3Key: !Ref ZipF
Environment:
Variables:
FunctionName: Config-item-change-test
Handler: P3Handler.lambda_handler
Runtime: python3.6
Timeout: '3'
Role: !GetAtt
- LambdaExecutionRole
- Arn
略
CloudFormation에서 템플릿 확인
CloudFormation은 템플릿이 올바른지 여부를 확인할 수 있습니다.
AWS 리소스 단위로 생성되기 때문에 오류 부분이 표시됩니다.
이것으로 에러 해소로 이어집니다.
CloudFormation으로 구축
마지막으로 "AWS CloudFormation이 IAM 리소스를 생성할 수 있음을 승인합니다."
확인하는 것을 잊지 마십시오. 다른 것은 기본적으로 괜찮습니다.
마지막으로
CloudFormation은 0의 도전이었기 때문에 사용법을 배우는 것이 어려웠습니다.
공식 문서가 충실하고, 선구자님 덕분에 사용할 수 있게 되었습니다.
실수가 있으면 지적해 주시면 감사하겠습니다.
Reference
이 문제에 관하여(CloudFormation으로 CloudWatch Events 및 Lambda 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tomoki_s/items/d23cd5eca26f7d778b73
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(CloudFormation으로 CloudWatch Events 및 Lambda 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tomoki_s/items/d23cd5eca26f7d778b73텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)