it-swarm.com.de

Wie lade ich eine Datei mit dem CloudFormation-Skript in den S3-Bucket hoch?

Wie lade ich eine Datei in meine CloudFormation-Vorlage für den AWS S3-Bucket hoch?

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      AccessControl: PublicRead
      BucketName: s3bucketuser
      VersioningConfiguration:
        Status: Enabled
5
Ayushi Garg

Sie können keine Dateien über CloudFormation hochladen. Dies wird nicht unterstützt, da CFN keinen Zugriff auf Ihr lokales Dateisystem hat.

Was ich normalerweise mache:

  • Rufen Sie die Aufgabe cloudformation von Ansible auf
  • CFN erstellt den Bucket und exportiert in Outputs den Bucket-Namen
  • Ansible lädt die Dateien mit s3_sync In der nächsten Aufgabe hoch, sobald die CFN abgeschlossen ist.

Ich hoffe, das hilft :)

4
MLu

AWS bietet ein Beispiel Makro , das je nach Anwendungsfall hilfreich sein kann: https://github.com/awslabs/aws-cloudformation-templates/tree/a11722d/aws/services/ CloudFormation/MacrosExamples/S3Objects .

  1. Erstellen Sie einen separaten CloudFormation-Stapel mit macro.template . Dadurch wird das Transformationsmakro "S3Objects" erstellt, das dann für jeden anderen Stapel in der Region verfügbar ist. In README.md wird erläutert, wie die Makrovorlage vor dem Hinzufügen zu CloudFormation "verpackt" wird (für eine Lambda-Funktion muss eine separate Quelldatei enthalten sein).
  2. Die Datei example.template bietet eine Beispielverwendung. Beachten Sie den Abschnitt Transform der obersten Ebene, der sich auf S3Objects Bezieht und die Verwendung von Type: AWS::S3::Object Ermöglicht.

In dem bereitgestellten Beispiel ermöglicht die Eigenschaft Body die Eingabe von Text direkt in die YAML- oder JSON-Vorlage. Um dies zu erweitern, kann man Fn :: Sub verwenden, um eine Datei mit Parametern oder Eigenschaften aus anderen Ressourcen zu erstellen:

---
AWSTemplateFormatVersion: '2010-09-09'

Transform: S3Objects

Parameters:
  ANameField:
    Type: String

Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      AccessControl: PublicRead
      BucketName: s3bucketuser
      VersioningConfiguration:
        Status: Enabled

  S3Object:
    Type: AWS::S3::Object
    Properties:
      Target:
        Bucket: !Ref Bucket
        Key: README.md
        ContentType: text/markdown
      Body: !Sub |
        # My text file

        This is my text file for ${ANameField}.
        The region is ${AWS::Region} and my account ID is ${AWS::AccountId}.
        This file is in the ${S3Bucket} bucket. The bucket ARN is ${S3Bucket.Arn},
        and its website endpoint is ${S3Bucket.WebsiteURL}
5
Alan Ivey