Referensi struktur pipa CodePipeline - AWS CodePipeline

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

Referensi struktur pipa CodePipeline

Secara default, setiap pipa yang berhasil Anda buatAWS CodePipelinememiliki struktur yang valid. Namun, jika Anda secara manual membuat atau mengedit file JSON untuk membuat pipa atau memperbarui pipa dariAWS CLI, Anda mungkin secara tidak sengaja membuat struktur yang tidak valid. Referensi berikut dapat membantu Anda lebih memahami persyaratan untuk struktur pipa Anda dan cara memecahkan masalah. Lihat kendala diQuotaAWSCodePipeline, yang berlaku untuk semua jaringan pipa.

Jenis tindakan yang valid dan penyedia di CodePipeline

Format struktur pipa digunakan untuk membangun tindakan dan tahapan dalam pipa. Jenis tindakan terdiri dari kategori tindakan dan jenis penyedia.

Berikut ini adalah kategori tindakan yang valid di CodePipeline:

  • Source

  • Membangun

  • Pengujian

  • Deploy

  • Persetujuan

  • Panggil

Setiap kategori tindakan memiliki seperangkat penyedia yang ditunjuk. Setiap penyedia tindakan, seperti Amazon S3, memiliki nama penyedia, sepertiS3, yang harus digunakan dalamProviderbidang dalam kategori aksi dalam struktur pipa Anda.

Ada tiga nilai yang valid untukOwnerbidang di bagian kategori tindakan dalam struktur pipa Anda:AWS,ThirdParty, danCustom.

Untuk menemukan nama penyedia dan informasi pemilik untuk penyedia tindakan Anda, lihatReferensi strukturatauJumlah artefak input dan output untuk setiap jenis tindakan.

Tabel ini mencantumkan penyedia yang valid berdasarkan jenis tindakan.

catatan

Untuk Bitbucket, GitHub, atau GitHub tindakan Enterprise Server, lihatCodeStarSourceConnection untuk Bitbucket, GitHub, dan GitHub Tindakan Server Enterprisetopik referensi tindakan.

Penyedia tindakan yang valid berdasarkan jenis tindakan
Kategori tindakan Penyedia tindakan yang valid Referensi tindakan
Source Amazon S3 Tindakan sumber Amazon S3
Amazon ECR Amazon ECR
CodeCommit CodeCommit
CodeStarSourceConnection (untuk Bitbucket, GitHub, GitHub Tindakan Enterprise Server) CodeStarSourceConnection untuk Bitbucket, GitHub, dan GitHub Tindakan Server Enterprise
Membangun CodeBuild AWS CodeBuild
CloudBees Jumlah artefak input dan output untuk setiap jenis tindakan
Jenkins Kustom Jumlah artefak input dan output untuk setiap jenis tindakan
TeamCity Jumlah artefak input dan output untuk setiap jenis tindakan
Pengujian CodeBuild AWS CodeBuild
AWS Device Farm Jumlah artefak input dan output untuk setiap jenis tindakan
BlazeMeter Kustom Jumlah artefak input dan output untuk setiap jenis tindakan
ThirdParty GhostInspector Jumlah artefak input dan output untuk setiap jenis tindakan
Jenkins Kustom Jumlah artefak input dan output untuk setiap jenis tindakan
Fokus Mikro StormRunner beban Jumlah artefak input dan output untuk setiap jenis tindakan
ThirdParty Jumlah artefak input dan output untuk setiap jenis tindakan
Runscope ThirdParty Jumlah artefak input dan output untuk setiap jenis tindakan
Deploy Amazon S3 Tindakan deploy Amazon S3
AWS CloudFormation AWS CloudFormation
CodeDeploy Jumlah artefak input dan output untuk setiap jenis tindakan
Amazon ECS Jumlah artefak input dan output untuk setiap jenis tindakan
Amazon ECS (Biru/Hijau)CodeDeployToECStindakan) Jumlah artefak input dan output untuk setiap jenis tindakan
Elastic Beanstalk Jumlah artefak input dan output untuk setiap jenis tindakan
AWSAppConfig AWSAppConfig
AWS OpsWorks Jumlah artefak input dan output untuk setiap jenis tindakan
AWS Service Catalog Jumlah artefak input dan output untuk setiap jenis tindakan
Amazon Alexa Jumlah artefak input dan output untuk setiap jenis tindakan
XebiaLabs kustom Jumlah artefak input dan output untuk setiap jenis tindakan
Persetujuan Manual Jumlah artefak input dan output untuk setiap jenis tindakan
Panggil AWS Lambda AWS Lambda
AWS Step Functions AWS Step Functions

Beberapa jenis tindakan di CodePipeline tersedia di pilihAWSDaerah saja. Ada kemungkinan bahwa jenis tindakan tersedia dalam sebuahAWSWilayah, tapiAWSpenyedia untuk jenis tindakan tersebut tidak tersedia.

Untuk informasi selengkapnya tentang setiap penyedia tindakan, lihatIntegrasi dengan CodePipeline Jenis tindakan.

Bagian berikut memberikan contoh untuk properti informasi penyedia dan konfigurasi untuk setiap jenis tindakan.

Persyaratan struktur pipa dan tahap di CodePipeline

Pipa dua tahap memiliki struktur dasar berikut:

{ "roleArn": "An IAM ARN for a service role, such as arn:aws:iam::80398EXAMPLE:role/CodePipeline_Service_Role", "stages": [ { "name": "SourceStageName", "actions": [ ... See Persyaratan struktur tindakan di CodePipeline ... ] }, { "name": "NextStageName", "actions": [ ... See Persyaratan struktur tindakan di CodePipeline ... ] } ], "artifactStore": { "type": "S3", "location": "The name of the Amazon S3 bucket automatically generated for you the first time you create a pipeline using the console, such as codepipeline-us-east-2-1234567890, or any Amazon S3 bucket you provision for this purpose" }, "name": "YourPipelineName", "version": 1 }

Struktur pipa memiliki persyaratan sebagai berikut:

  • Sebuah pipa harus berisi setidaknya dua tahap.

  • Tahap pertama dari pipa harus berisi setidaknya satu tindakan sumber. Hal ini dapat berisi tindakan sumber saja.

  • Hanya tahap pertama dari pipa yang dapat berisi tindakan sumber.

  • Setidaknya satu tahap di setiap pipa harus berisi tindakan yang bukan tindakan sumber.

  • Semua nama panggung dalam pipa harus unik.

  • Nama tahap tidak dapat diedit di CodePipeline konsol. Jika Anda mengedit nama panggung dengan menggunakanAWS CLI, dan panggung berisi tindakan dengan satu atau lebih parameter rahasia (seperti token OAuth), nilai parameter rahasia tersebut tidak diawetkan. Anda harus memasukkan nilai parameter secara manual (yang ditutupi oleh empat tanda bintang di JSON yang dikembalikan olehAWS CLI) dan memasukkannya ke dalam struktur JSON.

  • ParameterartifactStorebidang berisi artefak ember jenis dan lokasi untuk pipa dengan semua tindakan yang samaAWSWilayah. Jika Anda menambahkan tindakan di Wilayah yang berbeda dari pipa Anda, makaartifactStorespemetaan digunakan untuk daftar ember artefak untuk masing-masingAWSWilayah di mana tindakan dijalankan. Ketika Anda membuat atau mengedit pipa, Anda harus memiliki ember artefak di daerah pipa dan kemudian Anda harus memiliki satu ember artefak per Wilayah di mana Anda berencana untuk menjalankan tindakan.

    Contoh berikut menunjukkan struktur dasar untuk pipa dengan tindakan lintas wilayah yang menggunakanartifactStoresparameter:

    "pipeline": { "name": "YourPipelineName", "roleArn": "CodePipeline_Service_Role", "artifactStores": { "us-east-1": { "type": "S3", "location": "S3 artifact bucket name, such as codepipeline-us-east-1-1234567890" }, "us-west-2": { "type": "S3", "location": "S3 artifact bucket name, such as codepipeline-us-west-2-1234567890" } }, "stages": [ { ...
  • Bidang metadata pipa berbeda dari struktur pipa dan tidak dapat diedit. Ketika Anda memperbarui pipa, tanggal diupdatedbidang metadata berubah secara otomatis.

  • Ketika Anda mengedit atau memperbarui pipa, nama pipa tidak dapat diubah.

    catatan

    Jika Anda ingin mengganti nama pipa yang ada, Anda dapat menggunakan CLIget-pipelineperintah untuk membangun file JSON yang berisi struktur pipa Anda. Anda kemudian dapat menggunakan CLIcreate-pipelineperintah untuk membuat pipa dengan struktur itu dan memberikan nama baru.

Nomor versi pipa secara otomatis dihasilkan dan diperbarui setiap kali Anda memperbarui pipa.

Persyaratan struktur tindakan di CodePipeline

Sebuah tindakan memiliki struktur tingkat tinggi sebagai berikut:

[ { "inputArtifacts": [ An input artifact structure, if supported for the action category ], "name": "ActionName", "region": "Region", "namespace": "source_namespace", "actionTypeId": { "category": "An action category", "owner": "AWS", "version": "1" "provider": "A provider type for the action category", }, "outputArtifacts": [ An output artifact structure, if supported for the action category ], "configuration": { Configuration details appropriate to the provider type }, "runOrder": A positive integer that indicates the run order within the stage, } ]

Untuk daftar contohconfigurationrincian yang sesuai dengan jenis penyedia, lihatDetail konfigurasi berdasarkan tipe penyedia.

Struktur tindakan memiliki persyaratan sebagai berikut:

  • Semua nama tindakan dalam tahap harus unik.

  • Artefak masukan suatu tindakan harus sama persis dengan artefak output yang dinyatakan dalam tindakan sebelumnya. Misalnya, jika tindakan sebelumnya mencakup deklarasi berikut:

    "outputArtifacts": [ { "MyApp" } ],

    dan tidak ada artefak keluaran lainnya, maka artefak masukan dari tindakan berikut harus:

    "inputArtifacts": [ { "MyApp" } ],

    Hal ini berlaku untuk semua tindakan, apakah mereka berada dalam tahap yang sama atau dalam tahap berikut, tetapi artefak masukan tidak harus menjadi tindakan berikutnya dalam urutan yang ketat dari tindakan yang menyediakan artefak output. Tindakan secara parallel dapat menyatakan bundel artefak output yang berbeda, yang, pada gilirannya, dikonsumsi oleh tindakan berikut yang berbeda.

  • Nama artefak output harus unik dalam pipa. Misalnya, pipa dapat mencakup satu tindakan yang memiliki artefak keluaran bernama"MyApp"dan tindakan lain yang memiliki artefak keluaran bernama"MyBuiltApp". Namun, pipa tidak dapat mencakup dua tindakan yang keduanya memiliki artefak keluaran bernama"MyApp".

  • Tindakan lintas wilayah menggunakanRegionbidang untuk menunjukAWSWilayah di mana tindakan yang akan dibuat. ParameterAWSsumber daya yang dibuat untuk tindakan ini harus dibuat di Wilayah yang sama yang disediakan dalamregionbidang. Anda tidak dapat membuat tindakan lintas wilayah untuk jenis tindakan berikut:

    • Tindakan sumber

    • Tindakan oleh penyedia pihak ketiga

    • Tindakan oleh penyedia kustom

  • Tindakan dapat dikonfigurasi dengan variabel. Anda menggunakannamespacebidang untuk mengatur namespace dan informasi variabel untuk variabel eksekusi. Untuk informasi referensi tentang variabel eksekusi dan variabel output tindakan, lihatVariabel.

  • Untuk semua jenis tindakan yang didukung saat ini, satu-satunya string pemilik yang valid adalahAWS,ThirdParty, atauCustom. Untuk informasi selengkapnya, lihatReferensi API CodePipeline.

  • DefaultrunOrdernilai untuk tindakan adalah 1. Nilai harus berupa bilangan bulat positif (bilangan alami). Anda tidak dapat menggunakan fraksi, desimal, angka negatif, atau nol. Untuk menentukan urutan tindakan serial, gunakan nomor terkecil untuk tindakan pertama dan angka yang lebih besar untuk masing-masing tindakan lainnya secara berurutan. Untuk menentukan tindakan parallel, gunakan integer yang sama untuk setiap tindakan yang ingin Anda jalankan secara parallel. Di konsol, Anda dapat menentukan urutan serial untuk tindakan dengan memilihTambahkan grup tindakanpada tingkat di tahap di mana Anda ingin menjalankan, atau Anda dapat menentukan urutan parallel dengan memilihTambahkan tindakan. Kelompok aksimengacu pada urutan lari dari satu atau lebih tindakan pada tingkat yang sama.

    Misalnya, jika Anda ingin tiga tindakan berjalan secara berurutan dalam tahap, Anda akan memberikan tindakan pertamarunOrdernilai 1, tindakan keduarunOrdernilai 2, dan yang ketigarunOrdernilai 3 Namun, jika Anda ingin tindakan kedua dan ketiga berjalan secara parallel, Anda akan memberikan tindakan pertamarunOrder1 dan kedua tindakan kedua dan ketigarunOrdernilai 2

    catatan

    Penomoran tindakan serial tidak harus dalam urutan yang ketat. Misalnya, jika Anda memiliki tiga tindakan secara berurutan dan memutuskan untuk menghapus tindakan kedua, Anda tidak perlu mengganti ulangrunOrderdari tindakan ketiga. KarenarunOrdernilai dari tindakan itu (3) lebih tinggi darirunOrderdari tindakan pertama (1), itu berjalan secara serial setelah tindakan pertama di panggung.

  • Bila Anda menggunakan bucket Amazon S3 sebagai lokasi penyebaran, Anda juga menentukan kunci objek. Kunci objek dapat berupa nama file (objek) atau kombinasi awalan (path folder) dan nama file. Anda dapat menggunakan variabel untuk menentukan nama lokasi yang Anda inginkan pipa untuk digunakan. Tindakan penyebaran Amazon S3 mendukung penggunaan variabel berikut di kunci objek Amazon S3.

    Menggunakan variabel di Amazon S3
    Variabel Contoh input konsol Output
    Datetime js-aplikasi/ {datetime} .zip UTC timestamp dalam format ini: <YYYY>-<MM>-DD> _<HH>-<MM>-<SS>

    Contoh:

    js-application/2019-01-10_07-39-57.zip

    uid js-aplikasi/ {uuid} .zip UUID adalah pengenal unik secara global yang dijamin berbeda dari pengenal lainnya. UUID dalam format ini (semua digit dalam format heksadesimal): <8-digit>-<4-digit>-4-digit>-<4-digit>-<12-digit>

    Contoh:

    js-application/54a60075-b96a-4bf3-9013-db3a9EXAMPLE.zip

  • Ini adalah validactionTypeIdkategori untuk CodePipeline:

    • Source

    • Build

    • Approval

    • Deploy

    • Test

    • Invoke

    Beberapa jenis penyedia dan opsi konfigurasi disediakan di sini.

  • Jenis penyedia yang valid untuk kategori tindakan tergantung pada kategori. Misalnya, untuk jenis tindakan sumber, jenis penyedia yang valid adalahS3,GitHub,CodeCommit, atauAmazon ECR. Contoh ini menunjukkan struktur untuk tindakan sumber denganS3penyedia:

    "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3"},
  • Setiap tindakan harus memiliki konfigurasi tindakan yang valid, yang tergantung pada jenis penyedia untuk tindakan tersebut. Tabel berikut mencantumkan elemen konfigurasi tindakan yang diperlukan untuk setiap jenis penyedia yang valid:

    Properti konfigurasi tindakan untuk jenis penyedia
    Nama penyedia Nama penyedia dalam tipe tindakan Properti konfigurasi Properti yang dibutuhkan?
    Amazon S3 (Penyedia aksi Terapkan) Untuk informasi selengkapnya, termasuk contoh yang terkait dengan parameter aksi penerapan Amazon S3, lihatTindakan deploy Amazon S3.
    Amazon S3 (Penyedia tindakan sumber) Untuk informasi selengkapnya, termasuk contoh yang terkait dengan parameter aksi sumber Amazon S3, lihatTindakan sumber Amazon S3.
    Amazon ECR Untuk informasi selengkapnya, termasuk contoh yang terkait dengan parameter Amazon ECR, lihatAmazon ECR.
    CodeCommit Untuk informasi selengkapnya, termasuk contoh yang terkait CodeCommit parameter, lihatCodeCommit.
    GitHub Untuk informasi selengkapnya, termasuk contoh yang terkait GitHub parameter, lihatGitHub referensi struktur aksi sumber versi 1.
    AWS CloudFormation Untuk informasi selengkapnya, termasuk contoh yang terkaitAWS CloudFormationparameter, lihatAWS CloudFormation.
    CodeBuild Untuk deskripsi lebih lanjut dan contoh yang terkait dengan CodeBuild parameter, lihatAWS CodeBuild.
    CodeDeploy Untuk deskripsi lebih lanjut dan contoh yang terkait dengan CodeDeploy parameter, lihatAWS CodeDeploy.
    AWS Device Farm Untuk deskripsi lebih lanjut dan contoh yang terkait denganAWS Device Farmparameter, lihatAWS Device Farm.
    AWS Elastic Beanstalk ElasticBeanstalk ApplicationName Diperlukan
    EnvironmentName Diperlukan
    AWS Lambda Untuk informasi selengkapnya, termasuk contoh yang terkaitAWS Lambdaparameter, lihatAWS Lambda.
    AWS OpsWorks Stacks OpsWorks Stack Diperlukan
    Layer Opsional
    App Diperlukan
    Amazon ECS Untuk deskripsi dan contoh lainnya yang terkait dengan parameter Amazon ECS, lihatAmazon Elastic Container Service.
    Amazon ECS dan CodeDeploy (Biru/Hijau) Untuk deskripsi lebih lanjut dan contoh yang terkait dengan Amazon ECS dan CodeDeploy parameter biru/hijau, lihatLayanan Wadah Amazon Elastic CodeDeploy biru-hijau.
    AWS Service Catalog ServiceCatalog TemplateFilePath Diperlukan
    ProductVersionName Diperlukan
    ProductType Diperlukan
    ProductVersionDescription Opsional
    ProductId Diperlukan
    Alexa Skills Kit AlexaSkillsKit ClientId Diperlukan
    ClientSecret Diperlukan
    RefreshToken Diperlukan
    SkillId Diperlukan
    Jenkins Nama tindakan yang Anda berikan dalam CodePipeline Plugin untuk Jenkins (misalnya,MyJenkinsProviderName) ProjectName Diperlukan
    Persetujuan manual Manual CustomData Opsional
    ExternalEntityLink Opsional
    NotificationArn Opsional

Jumlah artefak input dan output untuk setiap jenis tindakan

Tergantung pada jenis tindakan, Anda dapat memiliki jumlah berikut input dan output artefak:

Kendala jenis tindakan untuk artefak
Pemilik Jenis tindakan Penyedia Jumlah artefak masukan yang valid Jumlah artefak keluaran yang valid
AWS Source Amazon S3 0 1
AWS Source CodeCommit 0 1
AWS Source Amazon ECR 0 1
ThirdParty Source GitHub 0 1
AWS Membangun CodeBuild 1 hingga 5 0 hingga 5
AWS Pengujian CodeBuild 1 hingga 5 0 hingga 5
AWS Pengujian AWS Device Farm 1 0
AWS Persetujuan Manual 0 0
AWS Deploy Amazon S3 1 0
AWS Deploy AWS CloudFormation 0 hingga 10 0 untuk 1
AWS Deploy CodeDeploy 1 0
AWS Deploy AWS Elastic Beanstalk 1 0
AWS Deploy AWS OpsWorks Stacks 1 0
AWS Deploy Amazon ECS 1 0
AWS Deploy AWS Service Catalog 1 0
AWS Panggil AWS Lambda 0 hingga 5 0 hingga 5
ThirdParty Deploy Alexa Skills Kit 1 hingga 2 0
Custom Membangun Jenkins 0 hingga 5 0 hingga 5
Custom Pengujian Jenkins 0 hingga 5 0 hingga 5
Custom Kategori yang didukung Seperti yang ditentukan dalam tindakan kustom 0 hingga 5 0 hingga 5

Pengaturan default untuk PollForSourceChanges parameter

ParameterPollForSourceChangesparameter default ditentukan oleh metode yang digunakan untuk membuat pipa, seperti yang dijelaskan dalam tabel berikut. Dalam banyak kasus,PollForSourceChangesparameter default ke true dan harus dinonaktifkan.

SaatPollForSourceChangesparameter default ke true, Anda harus melakukan hal berikut:

  • TambahkanPollForSourceChangesparameter ke file JSON atauAWS CloudFormationtemplat

  • Buat sumber daya deteksi perubahan (aturan CloudWatch Events, sebagaimana berlaku).

  • MengaturPollForSourceChangesparameter ke false

    catatan

    Jika Anda membuat CloudWatch Acara aturan atau webhook, Anda harus mengatur parameter ke false untuk menghindari memicu pipa lebih dari sekali.

    ParameterPollForSourceChangesparameter tidak digunakan untuk tindakan sumber Amazon ECR.

  • default parameter PollForSourceChanges
    Source Metode pembuatan Contoh “konfigurasi” output struktur JSON
    CodeCommit Pipeline dibuat dengan konsol (dan sumber daya deteksi perubahan dibuat oleh konsol). Parameter ditampilkan dalam output struktur pipa dan default kefalse.
    BranchName": "main", "PollForSourceChanges": "false", "RepositoryName": "my-repo"
    Pipeline dibuat dengan CLI atauAWS CloudFormation, danPollForSourceChangesparameter tidak ditampilkan dalam output JSON, tetapi set ketrue
    BranchName": "main", "RepositoryName": "my-repo"
    Amazon S3 Pipeline dibuat dengan konsol (dan sumber daya deteksi perubahan dibuat oleh konsol). Parameter ditampilkan dalam output struktur pipa dan default kefalse.
    "S3Bucket": "my-bucket", "S3ObjectKey": "object.zip", "PollForSourceChanges": "false"
    Pipeline dibuat dengan CLI atauAWS CloudFormation, danPollForSourceChangesparameter tidak ditampilkan dalam output JSON, tetapi set ketrue
    "S3Bucket": "my-bucket", "S3ObjectKey": "object.zip"
    GitHub Pipeline dibuat dengan konsol (dan sumber daya deteksi perubahan dibuat oleh konsol). Parameter ditampilkan dalam output struktur pipa dan default kefalse.
    "Owner": "MyGitHubAccountName", "Repo": "MyGitHubRepositoryName" "PollForSourceChanges": "false", "Branch": "main" "OAuthToken": "****"
    Pipeline dibuat dengan CLI atauAWS CloudFormation, danPollForSourceChangesparameter tidak ditampilkan dalam output JSON, tetapi set ketrue
    "Owner": "MyGitHubAccountName", "Repo": "MyGitHubRepositoryName", "Branch": "main", "OAuthToken": "****"

    ² JikaPollForSourceChangestelah ditambahkan pada setiap titik ke struktur JSON atauAWS CloudFormationTemplate, itu ditampilkan seperti yang ditunjukkan:

    "PollForSourceChanges": "true",

    ³ Untuk informasi tentang sumber daya deteksi perubahan yang berlaku untuk setiap penyedia sumber, lihatUbah Metode Deteksi.

Detail konfigurasi berdasarkan tipe penyedia

Bagian ini berisi daftar validconfigurationparameter untuk setiap penyedia tindakan.

Contoh berikut menunjukkan konfigurasi yang valid untuk tindakan deploy yang menggunakanAWS Service Catalog, untuk pipa yang dibuat di konsol tanpa file konfigurasi terpisah:

"configuration": { "TemplateFilePath": "S3_template.json", "ProductVersionName": "devops S3 v2", "ProductType": "CLOUD_FORMATION_TEMPLATE", "ProductVersionDescription": "Product version description", "ProductId": "prod-example123456" }

Contoh berikut menunjukkan konfigurasi yang valid untuk tindakan deploy yang menggunakanAWS Service Catalog, untuk pipa yang dibuat di konsol dengan terpisahsample_config.jsonfile konfigurasi:

"configuration": { "ConfigurationFilePath": "sample_config.json", "ProductId": "prod-example123456" }

Contoh berikut menunjukkan konfigurasi yang valid untuk tindakan deploy yang menggunakan Alexa Skills Kit:

"configuration": { "ClientId": "amzn1.application-oa2-client.aadEXAMPLE", "ClientSecret": "****", "RefreshToken": "****", "SkillId": "amzn1.ask.skill.22649d8f-0451-4b4b-9ed9-bfb6cEXAMPLE" }

Contoh berikut menunjukkan konfigurasi yang valid untuk persetujuan manual:

"configuration": { "CustomData": "Comments on the manual approval", "ExternalEntityLink": "http://my-url.com", "NotificationArn": "arn:aws:sns:us-west-2:12345EXAMPLE:Notification" }