기존 Amazon SES SMTP IAM 사용자의 액세스 키를 교체하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 8월 28일

AWS Identity and Access Management(IAM)에서 Amazon Simple Email Service(Amazon SES) Simple Mail Transfer Protocol(SMTP) 자격 증명을 교체하려고 합니다. Amazon SES와 호환되는 사용자 이름과 암호를 생성하려면 어떻게 해야 합니까?

​해결 방법

SMTP 사용자용 IAM 콘솔에서 생성한 액세스 키는 Amazon SES SMTP 인터페이스에서 작동하지 않습니다. IAM 콘솔에서 생성된 키는 Amazon SES SMTP 서버에 요구되는 자격 증명에 필요한 형식과 다른 형식입니다.

Amazon SES SMTP 인터페이스에 대한 자격 증명을 설정하려면 다음 중 하나를 수행하십시오.

새 Amazon SES SMTP 자격 증명 생성

1.    Amazon SES 콘솔을 사용하여 새로운 Amazon SES SMTP 자격 증명을 생성합니다.

2.    새 자격 증명을 받은 후 필요 없는 경우 IAM에서 기존 Amazon SES 자격 증명을 삭제하도록 선택할 수 있습니다.

기존 보안 액세스 키를 Amazon SES SMTP 형식으로 변환

참고: Python 3 이상 버전을 사용하여 다음 단계를 수행해야 합니다. 

1.    최소한 ses:SendRawEmail에 대한 권한을 부여하도록 기존 IAM 사용자의 정책을 업데이트합니다.

2.    보안 액세스 키를 Amazon SES SMTP 암호로 변환하는 Python 코드를 복사합니다.

3.    Python 코드를 텍스트 편집기에 붙여 넣은 다음 파일을 seskey.py로 저장합니다.

4.    Python 스크립트를 실행하려면 다음 명령을 사용합니다.
--secret에 기존 보안 액세스 키를 입력합니다.
--region에 SMTP 암호를 사용 중인 AWS 리전을 입력합니다.

python3 seskey.py --secret YOURKEYrrpg/JHpyvtStUVcAV9177EAKKmDP37P --region us-east-1

5.    스크립트가 Amazon SES에서 사용할 수 있는 새 보안 액세스 키를 출력합니다.

import os      #required to fetch environment varibles
import hmac    #required to compute the HMAC key
import hashlib #required to create a SHA256 hash
import base64  #required to encode the computed key
import sys     #required for system functions (exiting, in this case)

# Fetch the environment variable called AWS_SECRET_ACCESS_KEY, which contains
# the secret access key for your IAM user.
key = os.getenv('AWS_SECRET_ACCESS_KEY',0)

# These varibles are used when calculating the SMTP password. You shouldn't
# change them.
message = 'SendRawEmail'
version = '\x02'

# See if the environment variable exists. If not, quit and show an error.
if key == 0:
    sys.exit("Error: Can't find environment variable AWS_SECRET_ACCESS_KEY.")

# Compute an HMAC-SHA256 key from the AWS secret access key.
signatureInBytes = hmac.new(key.encode('utf-8'),message.encode('utf-8'),hashlib.sha256).digest()
# Prepend the version number to the signature.
signatureAndVersion = version.encode('utf-8') + signatureInBytes
# Base64-encode the string that contains the version number and signature.
smtpPassword = base64.b64encode(signatureAndVersion)
# Decode the string and print it to the console.
print(smtpPassword.decode('utf-8'))

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?