เมื่อผู้ใช้ต้องการใช้ AWS Services ผ่าน Lambda หรือโค้ดโปรแกรม ต้องตั้งค่า Session ก่อนเพื่อเข้าถึง AWS Services
AWS Session สามารถเป็น Default หรือ Customized ได้ตามความต้องการ
ข้อกำหนดปัญหา
ใช้ Boto3 Library ใน Python เพื่อสร้าง AWS Session
ขั้นตอนการแก้ปัญหา
- ขั้นตอนที่ 1 – เพื่อสร้าง AWS Session ให้ตั้งค่า Authentication Credentials ก่อน ผู้ใช้หาได้ใน IAM Console หรือสร้าง Credential File เอง โดย Default ตั้งอยู่ที่ ~/.aws/credentials
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
aws_session_token = YOUR_SESSION_TOKEN
region = REGION_NAME
- ขั้นตอนที่ 2 – ติดตั้ง Boto3 ด้วยคำสั่ง – pip install boto3
- ขั้นตอนที่ 3 – นำเข้า Boto3 Library
- ขั้นตอนที่ 4 – หากสร้าง Session ด้วย Default Credential ใช้ Session() โดยไม่มีพารามิเตอร์
- ขั้นตอนที่ 5 – หาก Session เป็น Customized ให้ส่งพารามิเตอร์ต่อไปนี้ –
aws_access_key_id(string) – AWS Access Key IDaws_secret_access_key(string) – AWS Secret Access Keyaws_session_token(string) – AWS Temporary Session Tokenregion_name(string) – Default Region เมื่อสร้าง Connection ใหม่profile_name(string) – ชื่อ Profile ที่จะใช้ หากไม่ระบุ จะใช้ Default Profile
ตัวอย่างโค้ด
โค้ดต่อไปนี้สร้าง AWS Session สำหรับ Default และ Customized Credentials:
import boto3
# To create default session:
def create_aws_session():
session = boto3.session.Session() # สร้าง Default Session และใช้เชื่อมต่อ AWS Service ใดๆ ก็ได้
return session
print(create_aws_session())
# To Create customized session:
def create_customized_session(aws_access_key, aws_secret_key, aws_token, region_name=None, profile_name=None):
session = boto3.session.Session(
aws_access_key_id=aws_access_key,
aws_secret_access_key=aws_secret_key,
aws_session_token=aws_token,
region_name=region_name,
profile_name=profile_name)
# region_name และ profile_name เป็น Optional Parameters ค่า Default คือ None
print(session)
return session
ผลลัพธ์
# หาก Default region_name ไม่มีหรือเป็น NONE และ region_name ไม่ได้ส่งใน Credential File/Calling Parameter
Session(region_name=None)
Session(region_name=None)
# หาก Default region_name มีอยู่และ region_name ถูกส่งใน Credential File/Calling Parameter
Session(region_name=YOUR_REGION_NAME)
Session(region_name= YOUR_REGION_NAME)