You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/actions/guides/deploying-to-amazon-elastic-container-service.md
+89-83Lines changed: 89 additions & 83 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,56 +11,63 @@ versions:
11
11
{% data reusables.actions.enterprise-github-hosted-runners %}
12
12
13
13
### Introduction
14
-
[Amazon ECR (Elastic Container Registry)](https://aws.amazon.com/ecr/) and [Amazon ECS (Elastic Container Service)](https://aws.amazon.com/ecs/) are a great combination for running your container-based workloads in the cloud.
15
14
16
-
This guide will show you how to orchestrate your deployments to Amazon ECR and ECS via GitHub Actions.
15
+
This guide explains how to use {% data variables.product.prodname_actions %} to build a containerized application, push it to [Amazon Elastic Container Registry (ECR)](https://aws.amazon.com/ecr/), and deploy it to [Amazon Elastic Container Service (ECS)](https://aws.amazon.com/ecs/).
17
16
18
-
The included workflow will build and push a new container image to Amazon ECR, and then will deploy a new task definition to Amazon ECS, on every push to the default branch.
17
+
On every new release in your {% data variables.product.company_short %} repository, the {% data variables.product.prodname_actions %} workflow builds and pushes a new container image to Amazon ECR, and then deploys a new task definition to Amazon ECS.
19
18
20
19
### Prerequisites
21
-
To adopt this workflow, you will first need to complete the following setup steps:
22
20
23
-
#### Create an ECR repository to store your images
24
-
For example, using [the AWS CLI](https://aws.amazon.com/cli/):
21
+
Before creating your {% data variables.product.prodname_actions %} workflow, you will first need to complete the following setup steps for Amazon ECR and ECS:
25
22
26
-
{% raw %}
27
-
```bash{:copy}
28
-
aws ecr create-repository \
29
-
--repository-name $ECR_REPOSITORY \
30
-
--region $AWS_REGION
31
-
```
32
-
{% endraw %}
23
+
1. Create an Amazon ECR repository to store your images.
33
24
34
-
Replace the value of `$ECR_REPOSITORY` in the workflow below with your repository's name.
25
+
For example, using [the AWS CLI](https://aws.amazon.com/cli/):
35
26
36
-
Replace the value of `$AWS_REGION` in the workflow below with your repository's region.
27
+
{% raw %}```bash{:copy}
28
+
aws ecr create-repository \
29
+
--repository-name $ECR_REPOSITORY \
30
+
--region $AWS_REGION
31
+
```{% endraw %}
37
32
38
-
#### Create an ECS task definition, an ECS cluster, and an ECS service
39
-
For details, follow [the Getting Started guide on the ECS console](https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun).
33
+
Ensure that you use the same Amazon ECR repository name for the `ECR_REPOSITORY` variable in the workflow below.
40
34
41
-
Replace the values for `$ECS_SERVICE` and `$ECS_CLUSTER`in the workflow below with your service and cluster names.
35
+
Ensure that you use the same AWS region value for the `AWS_REGION` variable in the workflow below.
42
36
43
-
#### Store your ECS task definition as a JSON file in your repository
44
-
The format should mirror the output generated by:
37
+
2. Create an Amazon ECS task definition, cluster, and service.
For details, follow the [Getting started wizard on the Amazon ECS console](https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun), or the [Getting started guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started-fargate.html) in the Amazon ECS documentation.
40
+
41
+
Ensure that you note the names you set for the Amazon ECS service and cluster, and use them for the `ECS_SERVICE` and `ECS_CLUSTER` variables in the workflow below.
42
+
43
+
3. Store your Amazon ECS task definition as a JSON file in your {% data variables.product.company_short %} repository.
44
+
45
+
The format of the file should be the same as the output generated by:
51
46
52
-
Replace the value of `$ECS_TASK_DEFINITION` in the workflow below with your JSON file's name.
Replace the value of `$CONTAINER_NAME`in the workflow below with the name of the container in the containerDefinitions section of the task definition.
51
+
Ensure that you set the `ECS_TASK_DEFINITION` variable in the workflow below as the path to the JSON file.
55
52
56
-
#### Store an IAM user access key in GitHub Actions secrets named `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`
57
-
See the documentation for each action used below for the recommended IAM policies for this IAM user, and best practices on handling the access key credentials.
53
+
Ensure that you set the `CONTAINER_NAME` variable in the workflow below as the container name in the `containerDefinitions` section of the task definition.
58
54
59
-
### Workflow
60
-
After updating the env section, follow these instructions to add the workflow to your repository:
55
+
4. Create {% data variables.product.prodname_actions %} secrets named `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` to store the values for your Amazon IAM access key.
56
+
57
+
For more information on creating secrets for {% data variables.product.prodname_actions %}, see "[Encrypted secrets](t/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository)."
58
+
59
+
See the documentation for each action used below for the recommended IAM policies for the IAM user, and methods for handling the access key credentials.
60
+
61
+
### Creating the workflow
62
+
63
+
Once you've completed the prerequisites, you can proceed with creating the workflow.
64
+
65
+
The following example workflow demonstrates how to build a container image and push it to Amazon ECR. It then updates the task definition with the new image ID, and deploys the task definition to Amazon ECS.
66
+
67
+
Ensure that you provide your own values for all the variables in the `env:` key of the workflow.
The following additional resources may also be of use:
137
-
138
-
1. Best practices on handling AWS access key credentials: https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html
139
-
1. Amazon ECR: https://aws.amazon.com/ecr/
140
-
1. Amazon ECS: https://aws.amazon.com/ecs/
141
-
1. Official AWS GitHub action to configure AWS credentials: https://github.com/aws-actions/configure-aws-credentials
142
-
1. Official AWS GitHub action to login to Amazon ECR: https://github.com/aws-actions/amazon-ecr-login
143
-
1. Official AWS GitHub action to “render” and Amazon ECS task definition: https://github.com/aws-actions/amazon-ecs-render-task-definition
144
-
1. Official AWS GitHub action to register an Amazon ECS task definition and deploy it to an ECS service: https://github.com/aws-actions/amazon-ecs-deploy-task-definition
143
+
144
+
For more information on the services used in these examples, see the following documentation:
145
+
146
+
* "[Security best practices in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)" in the Amazon AWS documentation.
147
+
* Official AWS "[Configure AWS Credentials](https://github.com/aws-actions/configure-aws-credentials)" action.
148
+
* Official AWS [Amazon ECR "Login"](https://github.com/aws-actions/amazon-ecr-login) action.
149
+
* Official AWS [Amazon ECS "Render Task Definition"](https://github.com/aws-actions/amazon-ecs-render-task-definition) action.
150
+
* Official AWS [Amazon ECS "Deploy Task Definition"](https://github.com/aws-actions/amazon-ecs-deploy-task-definition) action.
0 commit comments