An enterprise is designing a multi-account architecture on AWS using AWS Organizations. The network engineering team has created a central transit VPC in a dedicated Network account and needs to share specific private subnets with application development teams in separate accounts. The application teams must be able to deploy Amazon EC2 instances and AWS Fargate tasks into these shared subnets but must not be allowed to modify VPC resources.
The finance department wants to maximize cost savings across all EC2, Fargate, and AWS Lambda workloads across all accounts under consolidated billing. Additionally, security compliance dictates that all application logs must be centrally written to a single Amazon S3 bucket in a Security account, encrypted using a customer-managed KMS key, and no member account should be able to alter the central logging configuration.
Which architectural strategy should a Solutions Architect recommend to meet these requirements?
- AEnable sharing within AWS Organizations in the AWS Resource Access Manager (RAM) console. In the Network account, create a resource share for the subnets and associate it with the target Organizational Units (OUs). Purchase EC2 Instance Savings Plans in the consolidated billing management account. In the Security account, configure an S3 bucket policy allowing write access from the member accounts, and encrypt the bucket using the AWS managed key (aws/s3) with cross-account access enabled.
- Enable sharing within AWS Organizations in the AWS Resource Access Manager (RAM) console. In the Network account, create a resource share for the subnets and associate it with the target OUs. Purchase Compute Savings Plans in the consolidated billing management account. In the Security account, configure an S3 bucket policy allowing s3:PutObject from the Organization's member accounts, and create a KMS Customer Managed Key (CMK) with a key policy allowing the member accounts' IAM roles kms:GenerateDataKey and kms:Decrypt permissions.Answer
- CIn the Network account, create an AWS RAM resource share for the subnets and associate it with the application accounts, without enabling organization-wide sharing in the AWS RAM settings. Purchase Compute Savings Plans in the consolidated billing management account. In the Security account, configure an S3 bucket policy to allow writes from member accounts, and encrypt the bucket using a customer managed KMS key, relying solely on the bucket policy to delegate cross-account access to the KMS key.
- DEnable sharing within AWS Organizations in the AWS RAM console. In the Network account, create a resource share for the subnets and associate it with the target OUs. Purchase Compute Savings Plans in the consolidated billing management account. Create and attach a Service Control Policy (SCP) to the Root OU that explicitly grants the member accounts s3:PutObject access to the S3 bucket in the Security account and kms:GenerateDataKey access to the encryption key, without configuring local IAM policies or KMS key policies.