

 AWS Cloud9 tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Cloud9 dapat terus menggunakan layanan seperti biasa. [Pelajari selengkapnya](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Bekerja dengan Amazon ECR di IDE AWS Cloud9
<a name="ecr"></a>

Amazon Elastic Container Registry (Amazon ECR) adalah layanan registri kontainer terkelola AWS yang aman dan dapat diskalakan. Beberapa fungsi layanan Amazon ECR dapat diakses dari AWS Toolkit Explorer:
+ Membuat repositori.
+ Membuat AWS App Runner layanan untuk repositori atau gambar yang ditandai.
+ Mengakses tag gambar dan repositori URIs atau. ARNs
+ Menghapus tag gambar dan repositori.

Anda juga dapat mengakses berbagai fungsi Amazon ECR melalui AWS Cloud9 konsol dengan menginstal AWS CLI dan platform lainnya.

Untuk informasi selengkapnya tentang Amazon ECR, lihat [Apa itu Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)? di Panduan Pengguna Registri Amazon Elastic Container.

## Prasyarat
<a name="prereqs-awstoolkit-vscode-ecr"></a>

Berikut ini sudah diinstal sebelumnya di EC2 lingkungan AWS Cloud9 IDE untuk AWS Cloud9 Amazon. Mereka diminta untuk mengakses layanan Amazon ECR dari AWS Cloud9 IDE. 

### Kredensial IAM
<a name="create-an-iam-user"></a>

Peran IAM yang Anda buat dan gunakan untuk otentikasi di konsol. AWS Untuk informasi lebih lanjut tentang IAM, lihat [Panduan Pengguna AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

### Konfigurasi bucket
<a name="create-an-iam-user"></a>

Docker sudah diinstal sebelumnya di AWS Cloud9 IDE untuk lingkungan AWS Cloud9 Amazon EC2 . Untuk informasi selengkapnya tentang Docker, lihat [Menginstal Docker Engine](https://docs.docker.com/engine/install/).

### AWS Konfigurasi CLI versi 2
<a name="create-an-iam-user"></a>

AWS CLI versi 2 sudah diinstal sebelumnya di IDE AWS Cloud9 untuk lingkungan Amazon AWS Cloud9 . EC2 Untuk informasi selengkapnya tentang AWS CLI versi 2, lihat [Menginstal, memperbarui, dan menghapus CLI AWS](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) versi 2.

**Topics**
+ [Prasyarat](#prereqs-awstoolkit-vscode-ecr)
+ [Menggunakan Amazon ECR dengan IDE AWS Cloud9](ecr-working.md)

# Bekerja dengan layanan Amazon ECR di AWS Cloud9
<a name="ecr-working"></a>

Anda dapat mengakses layanan Amazon Elastic Container Registry (Amazon ECR) langsung dari Explorer AWS di IDE. AWS Cloud9 Anda dapat menggunakan Amazon ECR untuk mendorong gambar program ke repositori Amazon ECR. Untuk memulai, ikuti langkah-langkah ini:

1. Buat Dockerfile yang berisi informasi yang diperlukan untuk membangun gambar.

1. Buat gambar dari Dockerfile itu dan beri tag gambar untuk diproses.

1. Buat repositori yang ada di dalam instans Amazon ECR Anda. 

1. Dorong gambar yang ditandai ke repositori Anda.

**Topics**
+ [Prasyarat](#prereqs-vscode-ecr)
+ [1. Membuat Dockerfile](#dockerfile-ecr-cloud9toolkit)
+ [2. Membangun gambar Anda dari Dockerfile Anda](#build-docker-image)
+ [3. Membuat repositori baru](#create-repository)
+ [4. Mendorong, menarik, dan menghapus gambar](#push-image)

## Prasyarat
<a name="prereqs-vscode-ecr"></a>

Sebelum Anda dapat menggunakan fitur Amazon ECR dari AWS Toolkit untuk AWS Cloud9, pastikan Anda memenuhi [prasyarat](ecr.md#prereqs-awstoolkit-vscode-ecr) ini terlebih dahulu. Prasyarat ini sudah diinstal sebelumnya di IDE AWS Cloud9 untuk EC2 lingkungan Amazon dan diperlukan untuk AWS Cloud9 mengakses Amazon ECR.

## 1. Membuat Dockerfile
<a name="dockerfile-ecr-cloud9toolkit"></a>

Docker menggunakan file yang disebut Dockerfile untuk menentukan gambar yang dapat didorong dan disimpan di repositori jarak jauh. Sebelum Anda dapat mengunggah gambar ke repositori ECR, buat Dockerfile dan kemudian buat gambar dari Dockerfile itu.

**Membuat Dockerfile**

1. Untuk menavigasi ke direktori tempat Anda ingin menyimpan Dockerfile Anda, pilih opsi **Toggle Tree** di bilah navigasi kiri dalam IDE Anda. AWS Cloud9 

1. Buat file baru bernama **Dockerfile**.
**catatan**  
AWS Cloud9 IDE mungkin meminta Anda untuk memilih jenis file atau ekstensi file. Jika ini terjadi, pilih **plaintext**. AWS Cloud9 IDE memiliki ekstensi “dockerfile”. Namun, kami tidak menyarankan Anda menggunakannya. Ini karena ekstensi dapat menyebabkan konflik dengan versi tertentu dari Docker atau aplikasi terkait lainnya.

**Mengedit Dockerfile Anda menggunakan IDE AWS Cloud9**

Jika Dockerfile Anda memiliki ekstensi file, buka menu konteks (klik kanan) untuk file tersebut dan hapus ekstensi file. Sebuah Dockerfile dengan ekstensi dapat menyebabkan konflik dengan versi tertentu dari Docker atau aplikasi terkait lainnya.

Setelah ekstensi file dihapus dari Dockerfile Anda:

1. Buka Dockerfile kosong langsung di AWS Cloud9 IDE.

1. Salin isi contoh berikut ke Dockerfile Anda.  
**Example Templat gambar Dockerfile**  

   ```
   FROM ubuntu:22.04
   
   # Install dependencies
   RUN apt-get update && \
    apt-get -y install apache2
   
   # Install apache and write hello world message
   RUN echo 'Hello World!' > /var/www/html/index.html
   
   # Configure apache
   RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
    echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
    echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ 
    echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ 
    chmod 755 /root/run_apache.sh
   
   EXPOSE 80
   
   CMD /root/run_apache.sh
   ```

   Ini adalah Dockerfile yang menggunakan gambar Ubuntu 22.04. Petunjuk **RUN** memperbarui cache paket. Instal paket perangkat lunak untuk server web, lalu tulis “Hello World\$1” konten ke root dokumen server web. Instruksi **EXPOSE mengekspos** port 80 pada wadah, dan instruksi **CMD** memulai server web.

1. Simpan Dockerfile Anda.

## 2. Membangun gambar Anda dari Dockerfile Anda
<a name="build-docker-image"></a>

Dockerfile yang Anda buat berisi informasi yang diperlukan untuk membangun gambar untuk suatu program. Sebelum Anda dapat mendorong gambar itu ke instans Amazon ECR Anda, buat dulu gambarnya.

**Membangun gambar dari Dockerfile Anda**

1. Untuk menavigasi ke direktori yang berisi Dockerfile Anda, gunakan CLI Docker atau CLI yang terintegrasi dengan instance Docker Anda.

1. Untuk membuat gambar yang ditentukan di Dockerfile Anda, jalankan perintah **build Docker** dari direktori yang sama dengan Dockerfile.

   ```
             docker build -t hello-world .
   ```

1. Untuk memverifikasi bahwa gambar telah dibuat dengan benar, jalankan perintah **gambar Docker**.

   ```
   docker images --filter reference=hello-world
   ```  
**Example**  

   Outputnya adalah sebagai berikut.

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. Untuk menjalankan gambar yang baru dibangun berdasarkan Ubuntu 22.04, gunakan perintah **echo**.
**catatan**  
Langkah ini tidak diperlukan untuk membuat atau mendorong gambar Anda. Namun, Anda dapat melihat bagaimana gambar program bekerja saat dijalankan.

   ```
   FROM ubuntu:22.04
   CMD ["echo", "Hello from Docker in Cloud9"]
   ```

   Kemudian, jalankan dan bangun dockerfile. Anda harus menjalankan perintah ini dari direktori yang sama dengan dockerfile.

   ```
   docker build -t hello-world .
   docker run --rm hello-world
   ```  
**Example**  

   Outputnya adalah sebagai berikut.

   ```
   Hello from Docker in Cloud9
   ```

   Untuk informasi selengkapnya tentang perintah **Docker run**, lihat [referensi Docker run](https://docs.docker.com/engine/reference/run/) di situs web Docker.

## 3. Membuat repositori baru
<a name="create-repository"></a>

Untuk mengunggah gambar Anda ke instans Amazon ECR Anda, buat repositori baru tempat gambar tersebut dapat disimpan.

**Membuat repositori Amazon ECR baru**

1. Dari bilah navigasi AWS Cloud9 IDE, pilih **ikon AWS Toolkit**.

1. Perluas menu AWS Explorer.

1. Temukan default Wilayah AWS yang terkait dengan Anda Akun AWS. Kemudian, pilih untuk melihat daftar layanan yang melalui AWS Cloud9 IDE.

1. Buka menu konteks (klik kanan) untuk opsi **ECR** untuk memulai proses **Create new repository**. Kemudian, pilih **Create Repository**.

1. Untuk menyelesaikan proses, ikuti prompt.

1. Setelah proses selesai, Anda dapat mengakses repositori baru Anda dari bagian **ECR** pada menu Explorer. AWS 

## 4. Mendorong, menarik, dan menghapus gambar
<a name="push-image"></a>

Setelah Anda membuat gambar dari Dockerfile dan membuat repositori, Anda dapat mendorong gambar Anda ke repositori Amazon ECR Anda. Selain itu, menggunakan AWS Explorer dengan Docker dan AWS CLI, Anda dapat melakukan hal berikut:
+ Tarik gambar dari repositori Anda.
+ Hapus gambar yang disimpan di repositori Anda.
+ Hapus repositori Anda.

**Mengautentikasi Docker dengan registri default Anda**

Otentikasi diperlukan untuk bertukar data antara instans Amazon ECR dan Docker. Untuk mengautentikasi Docker dengan registri Anda:

1. Buka terminal di dalam AWS Cloud9 IDE Anda. 

1. Gunakan **get-login-password**metode ini untuk mengautentikasi ke registri ECR pribadi Anda dan masukkan wilayah dan Akun AWS ID Anda.

   ```
   aws ecr get-login-password \
       --region <region> \
   | docker login \
       --username AWS \
       --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
   ```
**penting**  
Dalam perintah sebelumnya, ganti **region** dan **AWS\$1account\$1id** dengan informasi yang spesifik untuk Anda. Akun AWS**region**Nilai yang valid adalah *us-east-1*.

**Menandai dan mendorong gambar ke repositori Anda**

Setelah Anda mengautentikasi Docker dengan instance Anda AWS, dorong gambar ke repositori Anda.

1. Gunakan perintah **docker images** untuk melihat gambar yang Anda simpan secara lokal dan mengidentifikasi gambar yang ingin Anda tag.

   ```
   docker images
   ```  
**Example**  

   Outputnya adalah sebagai berikut.

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. Tandai gambar Anda dengan perintah **tag Docker**.

   ```
   docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```

1. Dorong gambar yang ditandai ke repositori Anda dengan perintah push **Docker**.
**penting**  
Pastikan bahwa nama repositori lokal Anda sama dengan repositori AWS Amazon EC2 Anda. Dalam contoh ini, kedua repositori harus dipanggil. `hello-world` Untuk informasi selengkapnya tentang mendorong gambar dengan docker, lihat [Mendorong gambar Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html).

   ```
   docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```  
**Example**  

   Outputnya adalah sebagai berikut.

   ```
   The push refers to a repository [AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world] (len: 1)
   e9ae3c220b23: Pushed
   a6785352b25c: Pushed
   0998bf8fb9e9: Pushed
   0a85502c06c9: Pushed
   latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
   ```

Setelah gambar yang ditandai berhasil diunggah ke repositori, segarkan AWS Toolkit dengan memilih Refresh Explorer dari tab **Explorer**. AWS Ini kemudian terlihat di menu AWS Explorer di AWS Cloud9 IDE.

**Menarik gambar dari Amazon ECR**
+ Anda dapat menarik gambar ke instance lokal Anda dari perintah **tag Docker**.

  ```
  docker pull AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  ```  
**Example**  

  Outputnya adalah sebagai berikut.

  ```
  azonaws.com/hello-world:latest
  latest: Pulling from hello-world
  Digest: sha256:e02c521fd65eae4ef1acb746883df48de85d55fc85a4172a09a124b11b339f5e
  Status: Image is up to date for 922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world.latest
  ```

**Menghapus gambar dari repositori Amazon ECR Anda**

Ada dua metode untuk menghapus gambar dari AWS Cloud9 IDE. Metode pertama adalah menggunakan AWS Explorer.

1. Dari AWS Explorer, perluas menu **ECR**.

1. Perluas repositori yang ingin Anda hapus gambarnya.

1. Buka menu konteks (klik kanan) untuk tag gambar yang terkait dengan gambar yang ingin Anda hapus.

1. Untuk menghapus semua gambar yang disimpan yang terkait dengan tag itu, pilih **Hapus Tag...** .

**Menghapus gambar menggunakan CLI AWS**
+ Anda juga dapat menghapus gambar dari repositori Anda dengan perintah **AWS batch-delete-imageecr**.

  ```
  aws ecr batch-delete-image \
        --repository-name hello-world \
        --image-ids imageTag=latest
  ```  
**Example**  

  Outputnya adalah sebagai berikut.

  ```
  {
      "failures": [],
      "imageIds": [
          {
              "imageTag": "latest",
              "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b"
          }
      ]
  }
  ```

**Menghapus repositori dari instans Amazon ECR Anda**

Ada dua metode untuk menghapus repositori dari IDE. AWS Cloud9 Metode pertama adalah menggunakan AWS Explorer:

1. Dari AWS Explorer, perluas menu **ECR**.

1. Buka menu konteks (klik kanan) untuk repositori yang ingin Anda hapus.

1. Pilih **Hapus Repositori**... .

**Menghapus repositori Amazon ECR dari CLI AWS**
+ Anda dapat menghapus repositori dengan perintah **AWS ecr** delete-repository.
**catatan**  
Anda biasanya tidak dapat menghapus repositori tanpa terlebih dahulu menghapus gambar yang terkandung di dalamnya. Namun, jika Anda menambahkan flag **--force**, Anda dapat menghapus repositori dan semua gambarnya dalam satu langkah.

  ```
          aws ecr delete-repository \
        --repository-name hello-world \
        --force
  ```  
**Example**  

  Outputnya adalah sebagai berikut.

  ```
  --repository-name hello-world --force
  {
      "repository": {
          "repositoryUri": "922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world", 
          "registryId": "922327013870", 
          "imageTagMutability": "MUTABLE", 
          "repositoryArn": "arn:aws:ecr:us-west-2:922327013870:repository/hello-world", 
          "repositoryName": "hello-world", 
          "createdAt": 1664469874.0
      }
  }
  ```