Amazon S3 소스 (CLI) 에 대한 EventBridge 규칙 생성 - AWS CodePipeline

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon S3 소스 (CLI) 에 대한 EventBridge 규칙 생성

AWS CloudTrail 트레일을 생성하고 로깅을 활성화하려면

를 사용하여 트레일을 AWS CLI 만들려면 다음과 같이 지정하여 create-trail 명령을 호출합니다.

  • 추적 이름입니다.

  • AWS CloudTrail에 대한 버킷 정책을 이미 적용한 버킷입니다.

자세한 내용은 AWS 명령줄 인터페이스를 사용하여 트레일 만들기를 참조하십시오.

  1. create-trail 명령을 호출하고 --name--s3-bucket-name 파라미터를 포함시킵니다.

    이렇게 변경하는 이유는 무엇입니까? 이렇게 하면 S3 소스 버킷에 필요한 CloudTrail 트레일이 생성됩니다.

    다음 명령은 --name--s3-bucket-name을 사용하여 my-trail이라는 추적과 myBucket이라는 버킷을 생성합니다.

    aws cloudtrail create-trail --name my-trail --s3-bucket-name myBucket
  2. start-logging 명령을 호출하고 --name 파라미터를 포함시킵니다.

    이렇게 변경하는 이유는 무엇입니까? 이 명령은 원본 버킷에 대한 CloudTrail 로깅을 시작하고 이벤트를 로 EventBridge 전송합니다.

    예제

    다음 명령은 --name을 사용하여 my-trail이라는 추적에서 로깅을 시작합니다.

    aws cloudtrail start-logging --name my-trail
  3. put-event-selectors 명령을 호출하고 --trail-name--event-selectors 파라미터를 포함시킵니다. 이벤트 선택기를 사용하여 트레일에서 원본 버킷의 데이터 이벤트를 기록하고 해당 이벤트를 EventBridge 규칙에 전송하도록 지정합니다.

    이렇게 변경하는 이유는 무엇입니까? 이 명령은 이벤트를 필터링합니다.

    예제

    다음 명령은 --trail-name--event-selectors를 사용하여 소스 버킷 및 myBucket/myFolder라는 접두사에 대한 데이터 이벤트 관리를 지정합니다.

    aws cloudtrail put-event-selectors --trail-name my-trail --event-selectors '[{ "ReadWriteType": "WriteOnly", "IncludeManagementEvents":false, "DataResources": [{ "Type": "AWS::S3::Object", "Values": ["arn:aws:s3:::myBucket/myFolder/file.zip"] }] }]'
Amazon S3를 이벤트 소스 및 CodePipeline 대상으로 사용하여 EventBridge 규칙을 생성하고 권한 정책을 적용하려면
  1. 규칙을 EventBridge 호출하는 CodePipeline 데 사용할 권한을 부여합니다. 자세한 내용은 Amazon의 리소스 기반 정책 사용을 참조하십시오. EventBridge

    1. 다음 샘플을 사용하여 서비스 역할을 EventBridge 맡을 수 있는 신뢰 정책을 생성하십시오. 이름을 trustpolicyforEB.json로 지정합니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. 다음 명령을 사용하여 Role-for-MyRule 역할을 생성한 후 신뢰 정책에 연결합니다.

      이렇게 변경하는 이유는 무엇입니까? 이 신뢰 정책을 역할에 추가하면 에 대한 권한이 생성됩니다 EventBridge.

      aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
    3. 이 샘플에서 보이는 것처럼 MyFirstPipeline이라는 파이프라인에 대한 권한 정책 JSON을 생성합니다. 권한 정책 이름을 permissionspolicyforEB.json으로 지정합니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
    4. 다음 명령을 사용하여 앞에서 생성한 Role-for-MyRule 역할에 새로운 CodePipeline-Permissions-Policy-for-EB 권한 정책을 연결합니다.

      aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
  2. put-rule 명령을 호출하고 --name, --event-pattern--role-arn 파라미터를 포함시킵니다.

    다음 샘플 명령은 MyS3SourceRule이라는 역할 별칭을 생성합니다.

    aws events put-rule --name "MyS3SourceRule" --event-pattern "{\"source\":[\"aws.s3\"],\"detail-type\":[\"AWS API Call via CloudTrail\"],\"detail\":{\"eventSource\":[\"s3.amazonaws.com\"],\"eventName\":[\"CopyObject\",\"PutObject\",\"CompleteMultipartUpload\"],\"requestParameters\":{\"bucketName\":[\"my-bucket\"],\"key\":[\"my-key\"]}}} --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule"
  3. CodePipeline 대상으로 추가하려면 put-targets 명령을 호출하고 --rule--targets 매개 변수를 포함시키십시오.

    다음 명령은 MyS3SourceRule이라는 규칙에 대해 대상 Id가 숫자 1로 구성됨을 지정하며, 규칙에 대한 대상 목록에서 대상 1로 표시됩니다. 이 명령은 또한 파이프라인에 대한 예제 ARN를 지정합니다. 파이프라인은 리포지토리에서 변경이 발생하면 시작됩니다.

    aws events put-targets --rule MyS3SourceRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
파이프라인 PollForSourceChanges 파라미터를 편집하려면
중요

이 방법으로 파이프라인을 생성할 때 명시적으로 false로 설정되지 않은 경우 PollForSourceChanges 파라미터 기본값은 true입니다. 이벤트 기반 변경 감지를 추가할 때는 출력에 파라미터를 추가하고 false로 설정하여 폴링을 비활성화해야 합니다. 그렇지 않으면 파이프라인이 단일 소스 변경 시 두 번 시작됩니다. 자세한 내용은 파라미터의 기본 PollForSourceChanges 설정단원을 참조하세요.

  1. get-pipeline 명령을 실행하여 파이프라인 구조를 JSON 파일로 복사합니다. 예를 들어, MyFirstPipeline라는 파이프라인의 경우 다음 명령을 입력합니다.

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    이 명령은 아무 것도 반환하지 않지만 생성한 파일이 명령을 실행한 디렉터리에 표시되어야 합니다.

  2. 일반 텍스트 편집기에서 JSON 파일을 열고 다음 예에 나와 있는 것처럼 storage-bucket 버킷의 PollForSourceChanges 파라미터를 false로 변경하여 소스 단계를 편집합니다.

    이렇게 변경하는 이유는 무엇입니까? 이 파라미터를 false로 설정하면 정기적 확인이 비활성화되어 이벤트 기반 변경 탐지만 사용할 수 있습니다.

    "configuration": { "S3Bucket": "storage-bucket", "PollForSourceChanges": "false", "S3ObjectKey": "index.zip" },
  3. get-pipeline 명령을 사용하여 검색한 파이프라인 구조로 작업을 수행할 경우, JSON 파일에서 metadata 행을 제거해야 합니다. 이렇게 하지 않으면 update-pipeline 명령에서 사용할 수 없습니다. "metadata": { } 행과, "created", "pipelineARN""updated" 필드를 제거합니다.

    예를 들어, 구조에서 다음 행을 삭제합니다.

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" },

    파일을 저장합니다.

  4. 변경 사항을 적용하려면 파이프라인 JSON 파일을 지정하여 update-pipeline 명령을 실행합니다.

    중요

    파일 이름 앞에 file://를 포함해야 합니다. 이 명령에 필수적입니다.

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    이 명령은 편집한 파이프라인의 전체 구조를 반환합니다.

    참고

    update-pipeline 명령을 실행하면 파이프라인이 중지됩니다. update-pipeline 명령을 실행할 때 파이프라인을 통해 개정을 실행하는 중이라면 해당 실행이 중지됩니다. 업데이트된 파이프라인을 통해 해당 개정을 실행하려면 파이프라인을 수동으로 시작해야 합니다. start-pipeline-execution 명령을 사용하여 수동으로 파이프라인을 시작합니다.