Transferring Files Across AWS S3 Buckets in Different AWS Accounts Using Scripting
Step 1: Create source AWS Account (name: “AS”) and S3 Bucket (name: “same-cb-bucket-sagar” )
![Screenshot 2023-07-30 at 8 03 51 PM](https://private-user-images.githubusercontent.com/36581523/257057509-85bc3db5-4207-4bd8-8389-f8e404eaf0c1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNTMxODcsIm5iZiI6MTczOTI1Mjg4NywicGF0aCI6Ii8zNjU4MTUyMy8yNTcwNTc1MDktODViYzNkYjUtNDIwNy00YmQ4LTgzODktZjhlNDA0ZWFmMGMxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDA1NDgwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI2NDZjNDE5ZTdlZDNiYmUxMDJkZmRlYTM3N2RiMmQ5MjI3MjEwNWZlMWJiMWRmYmZiYWM5YjExN2FiYjkyMTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.c7ZMW9k99f5DLp3jIjUMTsWoW_dtSarjTXpx8HFx344)
Step 2: Create destination AWS Account (DG) and S3 Bucket (name: “same-cb-bucket-sagar-dest”)
![Screenshot 2023-07-30 at 8 04 21 PM](https://private-user-images.githubusercontent.com/36581523/257057534-53a7b1fb-28e0-4795-8719-dd43fd38f28a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNTMxODcsIm5iZiI6MTczOTI1Mjg4NywicGF0aCI6Ii8zNjU4MTUyMy8yNTcwNTc1MzQtNTNhN2IxZmItMjhlMC00Nzk1LTg3MTktZGQ0M2ZkMzhmMjhhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDA1NDgwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJlYWEzZTEzZTM4NmMyMDNmNmUzOTFkZDY4MmYzMmI4NDU1YmQ5NjQzZjQ5MGI5OGE5NWNlNjJjN2I2ZGQyMzYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.OO6Vl51Aju2cAmg_dA76fjShfhc7H_p2OnTlZ3tBfto)
Step 3: Configure IAM Roles (name: “s3-role-cb-src-as”) and Policies (name: “s3-cb-policy-lambda-sagar”) in the source AWS account.
![Screenshot 2023-07-30 at 8 05 16 PM](https://private-user-images.githubusercontent.com/36581523/257057570-87ecabaa-a220-4475-a02c-35fbf5c9dce0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNTMxODcsIm5iZiI6MTczOTI1Mjg4NywicGF0aCI6Ii8zNjU4MTUyMy8yNTcwNTc1NzAtODdlY2FiYWEtYTIyMC00NDc1LWEwMmMtMzVmYmY1YzlkY2UwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDA1NDgwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdjZmI3Zjg2MDc0ZTU0MGI5NTIyMDUyMTEyZGZhMzJlM2E3YjhlZGRjZDc3ZGQ5MTkwZDZkMGU3YWI3MzU0MDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.7RQDY0iRg_kvNlKDwxpLtUMCRBfQq_8DaIRIrf50W0M)
![Screenshot 2023-07-30 at 8 25 29 PM](https://private-user-images.githubusercontent.com/36581523/257058708-8d3839e8-b7b7-42df-a26a-af38cbadd7ef.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNTMxODcsIm5iZiI6MTczOTI1Mjg4NywicGF0aCI6Ii8zNjU4MTUyMy8yNTcwNTg3MDgtOGQzODM5ZTgtYjdiNy00MmRmLWEyNmEtYWYzOGNiYWRkN2VmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDA1NDgwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA1ZDc1YmNhMGIyYjM4MjEzMmVjOWExNDY4MDlmYzcxMjk0OWFmNzEyM2Q2MDJiOTI0OWU1OGU4MjQyZGRhOGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.CGxfN-KjF_XG7V2-elpEeVNIQWGT5TjjbHQ7puMFSMY)
Step 4: Create Lambda Function (name: “s3-cb-lmbda”) and add the S3 trigger in the Source AWS account.
![Screenshot 2023-07-30 at 8 25 56 PM](https://private-user-images.githubusercontent.com/36581523/257058737-67e82dfe-627d-4fbe-8df6-9b5cac1e0381.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNTMxODcsIm5iZiI6MTczOTI1Mjg4NywicGF0aCI6Ii8zNjU4MTUyMy8yNTcwNTg3MzctNjdlODJkZmUtNjI3ZC00ZmJlLThkZjYtOWI1Y2FjMWUwMzgxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDA1NDgwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFjZjYwZWI0ZmEwOTNlM2MxMGIwNDUyZGVjNDcxYTQ5ZGM1ZTY1YTAxMGFkY2ZiZDI2NzdjZDBkZGRmMWE3ZTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.yqrNg-gHVnxiHG3adfez_yjplJfzEjHmUEnm15WW2K8)
Code Used (NodeJs and Also Python boto3):
![Screenshot 2023-07-30 at 8 26 12 PM](https://private-user-images.githubusercontent.com/36581523/257058753-32e53df1-b49b-4621-b891-d88420987a0f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNTMxODcsIm5iZiI6MTczOTI1Mjg4NywicGF0aCI6Ii8zNjU4MTUyMy8yNTcwNTg3NTMtMzJlNTNkZjEtYjQ5Yi00NjIxLWI4OTEtZDg4NDIwOTg3YTBmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDA1NDgwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU5NDQ5YjEzN2RlMGM1MTNhZDdkZDZiMjg2OTY1MDA0YzU2Y2M0MTk4YTEzY2Q2M2ViZjIyYjMxZGMzNTVhNDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.q55gatu7_DO3AzqhhigNQXPYiER-hQTGzn6j_uXwe3Q)
![Screenshot 2023-07-30 at 8 26 24 PM](https://private-user-images.githubusercontent.com/36581523/257058761-0ab0acb7-9adf-49ed-8adc-03d12ed67edf.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNTMxODcsIm5iZiI6MTczOTI1Mjg4NywicGF0aCI6Ii8zNjU4MTUyMy8yNTcwNTg3NjEtMGFiMGFjYjctOWFkZi00OWVkLThhZGMtMDNkMTJlZDY3ZWRmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDA1NDgwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJjMWJlYTJlM2U3NmU5MGJiMTRhOTI2NjU2NWY5MjM3MDQxMTBmNjU3OTI3ZGJmZjZkY2EyYzg3NmU1NmQyMzgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.TAI_qD4596TDywWawQEowhGSFvOW9GGv61DyvHqFCeM)
![Screenshot 2023-07-30 at 8 26 37 PM](https://private-user-images.githubusercontent.com/36581523/257058776-1a561097-7108-45f4-9711-068b6a4b3888.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNTMxODcsIm5iZiI6MTczOTI1Mjg4NywicGF0aCI6Ii8zNjU4MTUyMy8yNTcwNTg3NzYtMWE1NjEwOTctNzEwOC00NWY0LTk3MTEtMDY4YjZhNGIzODg4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDA1NDgwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ3NDViMzc3NmU1M2FhYzY0NTQ2ZWJiYzE0Yjg1MzMzM2I5MDJlMTNjYjc4MDhiNWUyODFjMjE0NjNkNmJlN2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.2p8Gc908szSpYxjtK64lfRCL6isokP6iiGjo9Yo1YL8)
Python:
![Screenshot 2023-07-30 at 8 26 59 PM](https://private-user-images.githubusercontent.com/36581523/257058796-f5159fb8-dfe8-4276-b55f-490dc1544305.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNTMxODcsIm5iZiI6MTczOTI1Mjg4NywicGF0aCI6Ii8zNjU4MTUyMy8yNTcwNTg3OTYtZjUxNTlmYjgtZGZlOC00Mjc2LWI1NWYtNDkwZGMxNTQ0MzA1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDA1NDgwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWYyODE5MzIyOTkwYzcxMjY2NWJlYmYxZGExNGZlODIzZGE3OWE2NGM1MGUzM2JmYTJkZDAwZWY4YTdmMDAzN2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.NaWlRa9h02Ata3B-Py3KpXZ2lXtpHrIQZvjjkt2XhJE)
Step 5: Add Bucket Policy in the destination S3 Bucket (name: “same-cb-bucket-sagar-dest”):
![Screenshot 2023-07-30 at 8 27 19 PM](https://private-user-images.githubusercontent.com/36581523/257058814-23f5b194-b55e-4a90-903e-8f8727e9bcbb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNTMxODcsIm5iZiI6MTczOTI1Mjg4NywicGF0aCI6Ii8zNjU4MTUyMy8yNTcwNTg4MTQtMjNmNWIxOTQtYjU1ZS00YTkwLTkwM2UtOGY4NzI3ZTliY2JiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDA1NDgwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNjZjlhMjlmYjRkY2YwMTU4ZjQwYmUwYjcwMGFlZGQ4MWNlZmJmMDM0MzFjYWQzODI4MDc0YjcxNjAxNGZmNGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.P3ahGkPwiU7V3GP4MrKB-bipIz4NyzBJso3NAbqE9U8)
Step 6: Test the Function by uploading any file to source AWS bucket: File to be uploaded: leadsquared.png
![Screenshot 2023-07-30 at 8 27 45 PM](https://private-user-images.githubusercontent.com/36581523/257058848-e2aefccd-d7b8-4b0f-b9a5-6d9da20eb8fb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNTMxODcsIm5iZiI6MTczOTI1Mjg4NywicGF0aCI6Ii8zNjU4MTUyMy8yNTcwNTg4NDgtZTJhZWZjY2QtZDdiOC00YjBmLWI5YTUtNmQ5ZGEyMGViOGZiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDA1NDgwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA1MWY2M2ZkMWQwOTgwYjc0NmYyN2NjMWIzZjg5NTljMWM2MzhlYjg0OTBhMzAxMmQxZmNhNWIwYTE5ZTVjMDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.HlnEev3APHsrBBKQOwndTQg7CXuNya2THleH6WWaPA4)
Step 7: Now verify in the destination bucket.
![Screenshot 2023-07-30 at 8 28 09 PM](https://private-user-images.githubusercontent.com/36581523/257058875-f0bf9a76-2c70-4f3a-9f6f-ab0707defbd5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNTMxODcsIm5iZiI6MTczOTI1Mjg4NywicGF0aCI6Ii8zNjU4MTUyMy8yNTcwNTg4NzUtZjBiZjlhNzYtMmM3MC00ZjNhLTlmNmYtYWIwNzA3ZGVmYmQ1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDA1NDgwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQwM2M2ZTk2Yjk3MTBmYjY3MDZmMjA3OWZiMDYzZWUyZDBiMDBlOWIxMDBkMTc3MThjOTE3MDg5ODFlODRjNmUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ZFm2XDPEbK5z0JH6h2BOmfBrvZDwjn9m52iH1odoji0)
Conclusion:
In this assignment, we transferred S3 bucket data from a source AWS account to a destination AWS account's S3 bucket using a Lambda trigger function. The process involved: ● Setting up the necessary AWS resources. ● Configuring IAM roles and policies. ● Creating a Lambda function. ● Testing the functionality.
This assignment has provided hands-on experience working with AWS services, IAM roles, Lambda functions, and S3 buckets. It has showcased the power and flexibility of AWS to automate data transfer tasks and securely manage resources across different AWS accounts.