How To Client Setup S3 Bucket Replication - GetLinkfire/raw-data-documentation GitHub Wiki

How To - Setup S3 cross account bucket replication with Linkfire to receive raw data feeds.

Details

Source Account

  • Account ID: <SOURCEOWNERID>: ${source-aws-account-id}
  • Bucket Name <SOURCEBUCKET>: ${source-egress-client-bucket-name}

Destination Account

  • Account ID: <DESTINATIONOWNERID>: ${destination-aws-account-id}
  • Bucket Name <DESTINATIONBUCKET>: ${destination-ingress-bucket-name}

⚠️ The above details will be shared between the client and Linkfire through a secure channel.

1) Client - Enable Versioning

Ensure versioning is enabled on the client owned destination bucket. Linkfire will do the same on our source bucket.

aws s3api put-bucket-versioning \
--bucket <DESTINATIONBUCKET> \
--versioning-configuration Status=Enabled

2) Client - Update S3 Bucket Policy on Client Bucket.

Add the following policy to the client bucket to ensure Linkfire can deliver raw data feeds to your destination s3 bucket.

{
    "Version": "2012-10-17",
    "Id": "LinkfireRawDataFeedDeliveryPolicy",
    "Statement": [
        {
            "Sid": "AllowLinkfireReportDelivery",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<SOURCEOWNERID>:root"
            },
            "Action": [
                "s3:GetBucketVersioning",
                "s3:PutBucketVersioning",
                "s3:ReplicateObject",
                "s3:ReplicateDelete",
                "s3:ObjectOwnerOverrideToBucketOwner"
            ],
            "Resource": [
                "arn:aws:s3:::<DESTINATIONBUCKET>",
                "arn:aws:s3:::<DESTINATIONBUCKET>/*"
            ]
        }
    ]
}

3) Profit

Notify your Linkfire account manager or the security engineer that you are working with that you have enabled versioning and the s3 bucket policy, and we will the test and ensure replication/delivery is fully enabled.

Questions

If you have any questions, please reach out to [email protected]. We also provide means to communicate through a secure channel during implementation using Keybase.