An enterprise manages its multi-account environment using AWS Organizations. The environment consists of a Management account, a central Infrastructure account, a Security account, a Log Archive account, and three developer accounts (, , and ).
A solutions architect must design a resource sharing, billing, and logging strategy that meets the following requirements:
* Subnets from a VPC in the Infrastructure account must be shared with the developer accounts to allow them to deploy EC2 instances.
* VPC Flow Logs for the shared subnets must be published to an Amazon S3 bucket in the Log Archive account. These logs must be encrypted at rest using an AWS KMS Customer Managed Key (CMK) stored in the Security account.
* Compute Savings Plans purchased in the Management account must apply only to and . The account must be excluded from receiving these discounts to maintain standard On-Demand pricing for external client auditing.
* Developer accounts must be restricted from sharing their own resources with external accounts outside the organization using AWS Resource Access Manager (RAM).
Which combination of actions should the solutions architect recommend to meet these requirements?
- AEnable resource sharing in AWS RAM for the organization. In the Infrastructure account, create a resource share for the subnets and share them with the developer accounts. Attach an SCP to the Developer OU that denies `ram:CreateResourceShare` and `ram:UpdateResourceShare` if `ram:AllowsExternalPrincipals` is set to true. In the Management account's Billing Preferences, keep discount sharing enabled, but uncheck the account under the Savings Plans discount sharing preferences. In the Log Archive account, configure the S3 bucket to use the AWS-managed KMS key for S3 (`aws/s3`) to encrypt the flow logs, and grant the Security account access to the bucket.
- BEnable resource sharing in AWS RAM for the organization. In the Infrastructure account, create a resource share for the subnets and share them with the developer accounts. Attach an SCP to the Developer OU that denies `ram:CreateResourceShare` unless the principal is the Management account. In the account's billing console, disable Savings Plans discount sharing. In the Security account, create a KMS CMK and configure its key policy to grant `delivery.logs.amazonaws.com` the `kms:GenerateDataKey*` and `kms:Decrypt` permissions. In the Log Archive account, configure the S3 bucket policy to allow `delivery.logs.amazonaws.com` to perform `s3:PutObject`.
- Enable resource sharing in AWS RAM for the organization. In the Infrastructure account, create a resource share for the subnets and share them with the developer accounts. Attach an SCP to the Developer OU that denies `ram:CreateResourceShare` and `ram:UpdateResourceShare` if `ram:AllowsExternalPrincipals` is set to true. In the Management account's Billing Preferences, keep discount sharing enabled, but uncheck the account under the Savings Plans discount sharing preferences. In the Security account, create a KMS CMK and configure its key policy to grant `delivery.logs.amazonaws.com` the `kms:GenerateDataKey*` and `kms:Decrypt` permissions. In the Log Archive account, configure the S3 bucket policy to allow `delivery.logs.amazonaws.com` to perform `s3:PutObject`, and configure the bucket to use the KMS CMK in the Security account.Answer
- DIn the Infrastructure account, create a resource share for the subnets, set `AllowExternalPrincipals` to true, and invite the developer accounts manually. Attach an SCP to the Developer OU that denies `ram:AcceptResourceShare` for any external resource shares. In the Management account's Billing Preferences, disable discount sharing globally, and purchase a separate Compute Savings Plan directly in the and accounts. In the Security account, create a KMS CMK and configure its key policy to grant `delivery.logs.amazonaws.com` the `kms:GenerateDataKey*` and `kms:Decrypt` permissions. In the Log Archive account, configure the S3 bucket policy to allow `delivery.logs.amazonaws.com` to perform `s3:PutObject`.