아래와 같이 교차 계정에 대해 SQS를 사용할 수도 있다. 이럴 때는 EC2 인스턴스를 가진 계정을 허용하는 access policy를 SQS에 작성해야 한다.
아래의 경우, S3에 객체가 업로드 되자마자 SQS로 메시지를 전송하도록 한다.
Condition에는 S3 bucket(bucket 1)의 버킷명 및 계정 소유주의 계정 번호 가 들어간다.
업로드시마다 알림을 생성하려면 아래와 같이 설정하면 된다.
S3를 생성한 뒤 속성 탭에서 이벤트 알림 생성을 클릭하고
아래와 같이 SQS 대기열을 선택하면 미리 생성해 놓은 SQS 대기열을 고를 수 있다(아래 화면에서는 만들어 놓은 것이 없어 뜨지 않았다).
그 다음 SQS에서 Access policy를 아래와 같이 수정한다.
- 여기에서 가져왔다.
{
"Version": "2012-10-17",
"Id": "example-ID",
"Statement": [
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": [
"SQS:SendMessage"
],
"Resource": "<SQS-queue-ARN>",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:s3:*:*:<awsexamplebucket1>"
},
"StringEquals": {
"aws:SourceAccount": "<bucket-owner-account-id>"
}
}
}
]
}