Cross Account Deployment pipeline in AWS

Introduction

Cross-account deployment with AWS CodeCommit, CodeDeploy, and CodePipeline is a powerful way to manage the deployment of your code across different AWS accounts.

Procedure

AWS CodeCommit is a fully-managed source control service that makes it easy to host and manage Git repositories. It allows you to store, manage, and track changes to your code, making it easy to collaborate with others and maintain a history of your work.

AWS CodeDeploy is a fully-managed deployment service that automates software deployments to a variety of computing services, including Amazon EC2, AWS Fargate, AWS Lambda, and on-premises servers. With CodeDeploy, you can easily deploy new code updates to your servers, and roll back to previous versions if necessary.

AWS CodePipeline is a fully-managed continuous delivery service that helps you automate your release pipelines. It allows you to easily build, test, and deploy your code to a variety of environments, including staging and production.

When using these services together, you can set up a cross-account deployment pipeline that allows you to deploy code from one AWS account to another. This is particularly useful for organizations that have multiple accounts for different environments or teams.

To set up a cross-account deployment pipeline, you will first need to create a CodeCommit repository in the source account and push your code to it. Next, you will need to create a CodeDeploy application and deployment group in the destination account. You can then create a CodePipeline pipeline that connects the CodeCommit repository in the source account to the CodeDeploy application in the destination account.

Once your pipeline is set up, you can use CodePipeline to automatically deploy your code changes to the destination account whenever you make updates to your CodeCommit repository. This allows you to easily manage and deploy your code across multiple accounts, ensuring that your code is always up-to-date and secure.

Conclusion

In conclusion, cross-account deployment with AWS CodeCommit, CodeDeploy, and CodePipeline is a powerful and flexible way to manage the deployment of your code across different AWS accounts. With these services, you can easily automate the process of deploying code updates, making it easy to collaborate with others and maintain a history of your work.

Here is one example code to create a pipeline using aws CLI

{
   "pipeline":{
      "name":"api-production-crossaccount",
      "roleArn":"arn:aws:iam::{source_account}:role/AWS-CodePipeline-Service",
      "artifactStore":{
         "type":"S3",
         "location":"codepipeline-eu-west-1-223332327482136",
         "encryptionKey":{
            "id":"arn:aws:kms:eu-west-1:{source_account}:key/2dbee9a0-8360-4d38-9f37-6c8e9b94efe7",
            "type":"KMS"
         }
      },
      "stages":[
         {
            "name":"Source",
            "actions":[
               {
                  "name":"Source",
                  "actionTypeId":{
                     "category":"Source",
                     "owner":"AWS",
                     "provider":"CodeCommit",
                     "version":"1"
                  },
                  "runOrder":1,
                  "configuration":{
                     "BranchName":"master",
                     "OutputArtifactFormat":"CODE_ZIP",
                     "PollForSourceChanges":"true",
                     "RepositoryName":"repo-name"
                  },
                  "outputArtifacts":[
                     {
                        "name":"SourceArtifact"
                     }
                  ],
                  "inputArtifacts":[
                     
                  ],
                  "region":"eu-west-1",
                  "namespace":"SourceVariables"
               }
            ]
         },
         {
            "name":"Deploy",
            "actions":[
               {
                  "name":"Deploy",
                  "actionTypeId":{
                     "category":"Deploy",
                     "owner":"AWS",
                     "provider":"CodeDeploy",
                     "version":"1"
                  },
                  "runOrder":1,
                  "configuration":{
                     "ApplicationName":"planboard-api",
                     "DeploymentGroupName":"production"
                  },
                  "outputArtifacts":[
                     
                  ],
                  "inputArtifacts":[
                     {
                        "name":"SourceArtifact"
                     }
                  ],
                  "roleArn":"arn:aws:iam::{target_account}:role/crossaccountRoleforSourceAccount",
                  "region":"eu-west-1",
                  "namespace":"DeployVariables"
               }
            ]
         }
      ],
      "version":1
   }
}

Atiqur Rahman

I am MD. Atiqur Rahman graduated from BUET and is an AWS-certified solutions architect. I have successfully achieved 6 certifications from AWS including Cloud Practitioner, Solutions Architect, SysOps Administrator, and Developer Associate. I have more than 8 years of working experience as a DevOps engineer designing complex SAAS applications.

Leave a Reply