-
AWS PRESIGNED-URL 생성시 태그 추가설치&설정 관련 2022. 12. 19. 17:48728x90
AWS PRESIGNED-URL 생성시 태그 추가
AWS S3에 파일 업로드 url 생성시 Tag를 설정하는 방법 입니다.
필요 모듈 정보
코드 예제
function getAwsConfig() { const awsInfo = { region: 'ap-northeast-2' }; awsInfo['credentials'] = { accessKeyId: 'AWS_ACCESSKEY', secretAccessKey: 'AWS_SECRETKEY', }; return awsInfo; } const s3Client = new S3Client({ ...this.getAwsConfig() }); async function createSignedUrlWithTagExample() { const bucketParams = { Bucket: `presigned.lahuman.github.io`, Key: `example-file`, Tagging: 'trim-start=10&trim-end=20&resolution=1080' // 생성하려는 태그 정보를 url }; const putUrl = await getSignedUrl( this.s3Client, command, { expiresIn: 3600, // 유효한 시간 unhoistableHeaders: new Set(['x-amz-tagging']) // 테그가 있는 경우 꼭 넣어야 합니다. }, ); return putUrl; } function fileupload { const myHeaders = new Headers(); myHeaders.append("x-amz-tagging", "trim-start=10&trim-end=20&resolution=1080"); myHeaders.append("Content-Type", "image/jpeg"); const file = "<file contents here>"; // 파일 추가 const requestOptions = { method: 'PUT', headers: myHeaders, body: file, redirect: 'follow' }; fetch("https://s3.ap-northeast-2.amazonaws.com/presigned.lahuman.github.io/example-file?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAXO5TLYUH6F3XYS72%2F20221006%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Date=20221006T094047Z&X-Amz-Expires=300&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDEaDmFwLW5vcnRoZWFzdC0yIkgwRgIhAOJ%2B%2FNVMDRIoBjBPApBrLqn7a7%2BgAcgWMpEui0KlWmhbAiEAqK%2Ff8MXuEMKTJ1PcpbXO8wI7SJafhJCf282JzEZEqkgqhwQI6%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw1MTMwODc4ODI1MTEiDODgfs405QATigXRzSrbA7WQxn2YVIgZEAzmGiN86SdJyXciHpNFU10kcJUP0J0CbYY%2BFZ8v0gFLASeNq8sG5k5J5F1BsFmMJgMMQlS2ddoJuOsF%2BJhh%2FlOG1uKGv7Q75xiYWhdq3V1WCvvfuWxUpaOGEHDSKTlhScJ0D8%2BNz5tUDZjsT7ubbvM%2BDLqAfocrFYxmmO56CKa8RENMQbMV3QgoyCB2nfqJOZjd%2FFVi5mOehucxEq68lKx9kxNZviJN18jcqo0q0jpXYiSoW4jBWqzY0pPupzxcq9AXTxk%2BZpYsiQh5omJ8dv8rNHGGZWcgeLb0UMKSmvgBOMwrxKplb%2BV1IpbRJyXzcw319O1D%2Bfa%2FEyPqIFEt10%2FMiAKNIOqqEYPSDfS0rKtIvnJQ1M7%2FSKi3hrCMHUW43lB81Z8kJDeA%2FcO41uVV8dn4u82ex8cVI9jTm6HGH%2BYaHsllI9De1df8nfBU0AbL3s0RL8hRnSkXCHh%2Bi5uDr3tO8tkyZFM4tOiOIFfQA5Y3l73N66JgFjtUpmL%2FBTFoO6dL7wSEBCOwN9gtm%2Bc%2F8Tgfoa1Bx88MkSj6C%2FtMP%2BYr%2FRoK3AcIIRTav4C5IgJRXE6ep9M4chy9uRkEsInC104wKBAEKJudpr2K6oFaxujixssw%2FL%2F6mQY6pAGro7jynKBELGASsLiok%2FHW7pHAatgU3%2FIEEtsjk4ALbs06FJjAbx7fQHVGquGN%2BO170twnNggS%2FB55%2BoTJhWkVytxOC4lwe5NBgnFhv9nqQy9ISBVv4aFTYyDe1q2LDPQC7Xlg0dK7S1TQN6mhH9dA8uZ6ZstX3Y9EcpZoeN67cSNTT9w5jM%2FnpsGEMogqVXLvc5xNKVTuEm5eUgs21VBvQKA6Ag%3D%3D&X-Amz-Signature=1b68aba7a15c402c4395f72d78b0a1a7db2433709750eaf75a6f0f53a75cb82f&X-Amz-SignedHeaders=host%3Bx-amz-tagging&x-id=PutObject", requestOptions) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error)); }
결과
생성된 파일을 S3에서 확인하면 아래 그림과 같이 Tags에 설정된 key-value를 확인 가능합니다.
마치며
unhoistableHeaders: new Set(['x-amz-tagging']) 이 부분을 몰라서 시간이 오래 걸렸습니다.
이 부분이 없어도 결과 url의 parameter에 태그가 설정된 것 처럼 나오지만, 실제로 태그가 생성되지 않습니다.
참고 자료
728x90'설치&설정 관련' 카테고리의 다른 글
github action으로 jekyll 빌드와 배포 하기 (2) 2024.06.12 AWS의 CodePipeline 에서 SonarQube 사용하기 (0) 2023.05.28 Nginx를 통한 PROXY 통신시 간혈적인 502 오류 발생 (0) 2022.12.14 ec2에 redis-cli 설치 (0) 2022.11.02 Nginx 와 xwkik proxy 처리 (0) 2022.10.24