Amazon S3 버킷 정책 작업 - AWS SDK for JavaScript

곧 AWS SDK for JavaScript(v2)에 대한 지원이 종료될 예정임을 알려드립니다. AWS SDK for JavaScript v3로 마이그레이션하실 것을 권장합니다. 마이그레이션 날짜, 추가 세부 정보 및 방법에 대한 자세한 내용은 링크된 공지 사항을 참조하세요.

Amazon S3 버킷 정책 작업

JavaScript code example that applies to Node.js execution

이 Node.js 코드 예제는 다음을 보여 줍니다.

  • Amazon S3 버킷의 버킷 정책을 검색하는 방법

  • Amazon S3 버킷의 버킷 정책을 추가하거나 업데이트하는 방법

  • Amazon S3 버킷의 버킷 정책을 삭제하는 방법

시나리오

이 예제에서는 일련의 Node.js 모듈을 사용하여 Amazon S3 버킷에 대한 버킷 정책을 검색, 설정 또는 삭제합니다. Node.js 모듈은 SDK for JavaScript로 Amazon S3 클라이언트 클래스의 다음 메서드를 사용하여 선택한 Amazon S3 버킷에 대한 정책을 구성합니다.

Amazon S3의 버킷 정책에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서버킷 정책 및 사용자 정책 사용을 참조하세요.

사전 필수 작업

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

SDK 구성

글로벌 구성 객체를 생성한 후 코드에 대한 리전을 설정하여 SDK for JavaScript를 구성합니다. 이 예제에서 리전이 us-west-2로 설정되어 있습니다.

// Load the SDK for JavaScript var AWS = require('aws-sdk'); // Set the Region AWS.config.update({region: 'us-west-2'});

현재 버킷 정책 검색

파일 이름이 s3_getbucketpolicy.js인 Node.js 모듈을 생성합니다. 이 모듈은 원하는 정책이 있는 버킷을 지정하는 단일 명령줄 인수를 가져옵니다. 위와 같이 SDK를 구성해야 합니다.

AWS.S3 서비스 객체를 생성합니다. 전달해야 하는 유일한 파라미터는 getBucketPolicy 메서드를 호출할 때 선택한 버킷의 이름입니다. 현재 버킷에 정책이 있는 경우 해당 정책은 Amazon S3에서 콜백 함수에 전달되는 data 파라미터에 반환됩니다.

선택한 버킷에 정책이 없는 경우 해당 정보는 error 파라미터에서 콜백 함수에 반환됩니다.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object s3 = new AWS.S3({ apiVersion: "2006-03-01" }); var bucketParams = { Bucket: process.argv[2] }; // call S3 to retrieve policy for selected bucket s3.getBucketPolicy(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data.Policy); } });

예제를 실행하려면 명령줄에서 다음을 입력합니다.

node s3_getbucketpolicy.js BUCKET_NAME

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

간단한 버킷 정책 설정

파일 이름이 s3_setbucketpolicy.js인 Node.js 모듈을 생성합니다. 이 모듈은 적용할 정책이 있는 버킷을 지정하는 단일 명령줄 인수를 가져옵니다. 위와 같이 SDK를 구성합니다.

AWS.S3 서비스 객체를 생성합니다. 버킷 정책은 JSON 문서에서 지정됩니다. 먼저, 버킷을 식별하는 Resource 값을 제외하고 정책을 지정하기 위한 모든 값을 포함하는 JSON 객체를 생성합니다.

정책에 필요한 Resource 문자열의 형식을 지정하여 선택한 버킷의 이름을 통합합니다. 해당 문자열을 JSON 객체에 삽입합니다. 버킷의 이름과 문자열 값으로 변환된 JSON 정책을 포함하여 putBucketPolicy 메서드를 위한 파라미터를 준비합니다.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object s3 = new AWS.S3({ apiVersion: "2006-03-01" }); var readOnlyAnonUserPolicy = { Version: "2012-10-17", Statement: [ { Sid: "AddPerm", Effect: "Allow", Principal: "*", Action: ["s3:GetObject"], Resource: [""], }, ], }; // create selected bucket resource string for bucket policy var bucketResource = "arn:aws:s3:::" + process.argv[2] + "/*"; readOnlyAnonUserPolicy.Statement[0].Resource[0] = bucketResource; // convert policy JSON into string and assign into params var bucketPolicyParams = { Bucket: process.argv[2], Policy: JSON.stringify(readOnlyAnonUserPolicy), }; // set the new policy on the selected bucket s3.putBucketPolicy(bucketPolicyParams, function (err, data) { if (err) { // display error message console.log("Error", err); } else { console.log("Success", data); } });

예제를 실행하려면 명령줄에서 다음을 입력합니다.

node s3_setbucketpolicy.js BUCKET_NAME

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

버킷 정책 삭제

파일 이름이 s3_deletebucketpolicy.js인 Node.js 모듈을 생성합니다. 이 모듈은 삭제할 정책이 있는 버킷을 지정하는 단일 명령줄 인수를 가져옵니다. 위와 같이 SDK를 구성합니다.

AWS.S3 서비스 객체를 생성합니다. deleteBucketPolicy 메서드를 호출할 때 전달해야 하는 유일한 파라미터는 선택한 버킷의 이름입니다.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object s3 = new AWS.S3({ apiVersion: "2006-03-01" }); var bucketParams = { Bucket: process.argv[2] }; // call S3 to delete policy for selected bucket s3.deleteBucketPolicy(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data); } });

예제를 실행하려면 명령줄에서 다음을 입력합니다.

node s3_deletebucketpolicy.js BUCKET_NAME

이 샘플 코드는 GitHub에서 찾을 수 있습니다.