Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo GitHub delle azioni per la distribuzione su Elastic Beanstalk
GitHub Le azioni
Esempio di flusso di lavoro: ambiente Beanstalk Standard
Il seguente flusso di lavoro di esempio implementa un'applicazione in un ambiente Beanstalk Standard ogni volta che si invia il push alla filiale. main Crea un .yml file nel tuo repository in. .github/workflows/ L'azione crea l'ambiente se non esiste. In tal caso, solution-stack-name (oplatform-arn) seleziona la piattaforma e option-settings deve fornire il profilo dell'istanza e il ruolo di servizio descritti inRuoli, profili di istanza e policy utente di Elastic Beanstalk Service. Quando l'ambiente esiste già, questi input sono opzionali.
Esempio GitHub Flusso di lavoro delle azioni per un ambiente Beanstalk Standard
name: Deploy to Elastic Beanstalk on: push: branches: - main permissions: id-token: write contents: read jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::123456789012:role/my-github-actions-roleaws-region:us-east-1- name: Deploy to Elastic Beanstalk uses: aws-actions/aws-elasticbeanstalk-deploy@v1 with: aws-region:us-east-1application-name:my-applicationenvironment-name:my-application-envsolution-stack-name: '64bit Amazon Linux 2023 v4.10.0 running Go 1' option-settings: | [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:elasticbeanstalk:environment", "OptionName": "ServiceRole", "Value": "aws-elasticbeanstalk-service-role" } ]
Questo flusso di lavoro esamina il tuo repository, utilizza OpenID Connect (OIDC)
Esempio di flusso di lavoro: ambiente Beanstalk Cluster
Un ambiente Beanstalk Cluster esegue un'immagine contenitore, quindi un bundle di origine da solo non può essere distribuito su di esso. Per eseguire l'implementazione in un ambiente Beanstalk Cluster, imposta uno dei seguenti input anziché uno stack di soluzioni o un ARN della piattaforma:
-
image-uri— L'URI di un'immagine del contenitore che il tuo flusso di lavoro ha già creato e inviato a un registro, come Amazon Elastic Container Registry (Amazon ECR). L'azione crea la versione dell'applicazione direttamente dall'immagine e non carica un pacchetto sorgente su Amazon S3. -
build-configuration— Un oggetto JSON che indica a Elastic Beanstalk come creare l'immagine dalla fonte, inclusi i presupposti e il tipo di compilazioneCodeBuildServiceRole. AWS CodeBuild L'azione carica il pacchetto sorgente su Amazon S3, crea la versione dell'applicazione con la configurazione della build e attende il completamento della compilazione prima di distribuirla. Per le impostazioni di compilazione, consulta. Creazione di immagini di container per ambienti Beanstalk Cluster
Il seguente flusso di lavoro di esempio crea un'immagine, la invia ad Amazon ECR e la distribuisce in un ambiente Beanstalk Cluster. L'azione crea l'ambiente se non esiste. In tal caso, option-settings deve fornire i ruoli di cluster, nodo e osservabilità descritti in Autorizzazioni per Beanstalk Cluster e il ruolo assunto da GitHub Actions deve essere autorizzato a passarli.
Esempio GitHub Flusso di lavoro delle azioni per un ambiente Beanstalk Cluster
name: Deploy to Elastic Beanstalk on: push: branches: - main permissions: id-token: write contents: read jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::123456789012:role/my-github-actions-roleaws-region:us-east-1- name: Login to Amazon ECR id: ecr uses: aws-actions/amazon-ecr-login@v2 - name: Build and push container image run: | docker build --platform linux/amd64 -t ${{ steps.ecr.outputs.registry }}/my-app:${{ github.sha }} . docker push ${{ steps.ecr.outputs.registry }}/my-app:${{ github.sha }} - name: Deploy to Elastic Beanstalk uses: aws-actions/aws-elasticbeanstalk-deploy@v1 with: aws-region:us-east-1application-name:my-cluster-appenvironment-name:my-cluster-envimage-uri: ${{ steps.ecr.outputs.registry }}/my-app:${{ github.sha }} option-settings: | [ { "Namespace": "aws:elasticbeanstalk:eks", "OptionName": "cluster-role", "Value": "${{ secrets.CLUSTER_ROLE_ARN }}" }, { "Namespace": "aws:elasticbeanstalk:eks", "OptionName": "node-role", "Value": "${{ secrets.NODE_ROLE_ARN }}" }, { "Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "observability-role", "Value": "${{ secrets.OBSERVABILITY_ROLE_ARN }}" } ]
Quando build-configuration è impostato image-uri o, l'deployment-timeoutinput predefinito è 2400 secondi anziché 900. Il primo ambiente Beanstalk Cluster su un set di sottoreti esegue il provisioning di un cluster Amazon EKS, il che richiede 15-20 minuti; gli ambienti successivi sulle stesse sottoreti riutilizzano il cluster e vengono implementati in pochi minuti.
Per le autorizzazioni richieste, l'build-configurationesempio, l'elenco completo degli input e altre opzioni di configurazione per entrambi i tipi di ambiente, consulta l'azione README di Elastic Beanstalk Deploy su. https://github.com/aws-actions/aws-elasticbeanstalk-deploy#readme