
EC2RoleS3Upload
touch test_2.txt
<S3BUCKETNAME> phù hợp với giá trị của bạn.touch upload-s3-usingec2role.py
echo "import boto3" > upload-s3-usingec2role.py
echo "s3 = boto3.client( 's3' )" >> upload-s3-usingec2role.py
echo "s3.upload_file('test_2.txt', '<S3BUCKETNAME>', 'test_2.txt')" >> upload-s3-usingec2role.py
5. Thực hiện chạy ứng dụng python của chúng ta để upload file lên S3 bucket.
python3 upload-s3-usingec2role.py
6. Truy cập vào giao diện dịch vụ S3.

Khi sử dụng IAM role gán vào EC2 instance (còn gọi là EC2 Instance profile). Ứng dụng trên máy chủ EC2 truy xuất thông tin xác thực bảo mật được cung cấp bởi IAM Role từ EC2 metadata iam/ security-credentials/role-name. Ứng dụng được cấp quyền cho các hành động và tài nguyên mà chúng ta đã xác định cho IAM role thông qua thông tin xác thực bảo mật được liên kết với IAM role.
Chúng ta có thể kiểm tra thông tin xác thực bảo mật được tạo ra cho IAM role ec2roles3upload bằng câu lệnh sau. Chúng ta có thể thấy thông tin chứng thực có thời gian hết hạn ( Expiration ) và sẽ được tự động làm mới sau khoảng thời gian hết hạn này.
# Yêu cầu một token (token hết hạn từ 1 đến 21600 giây)
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
# Sử dụng token để yêu cầu thông tin xác thực
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/EC2RoleS3Upload

Khi chúng ta thực hiện gán EC2 role vào EC2 instance thì việc sinh ra thông tin chứng thực tạm thời được thực thi tự động cho chúng ta thông qua một dịch vụ là Security Token Service ( STS ). Chúng ta cũng có thể sử dụng AWS CLI trong EC2 instance đã được gán IAM role mà không cần cấu hình. ( aws configure )
Chạy câu lệnh sau để liệt kê S3 bucket trong account:
aws s3 ls
