AWS CodeArtifact – Häufig gestellte Fragen

Allgemeines

AWS CodeArtifact ist ein vollständig verwalteter Artefakt-Repository-Service, der es Unternehmen jeder Größe erleichtert, die in ihrem Software-Entwicklungsprozess verwendeten Software-Pakete sicher zu speichern, zu veröffentlichen und freizugeben. CodeArtifact funktioniert mit häufig verwendeten Paketmanagern und erstellt Tools wie Maven und Gradle (Java), npm und yarn (JavaScript) oder pip and twine (Python), oder NuGet (.NET).

  • npm/Yarn
  • pip/twine
  • Maven/Gradle
  • NuGet
  • RubyGems
  • SwiftPM
  • Generische
  • Cargo

Mit CodeArtifact müssen Sie keine Vorauszahlungen leisten oder sonstige Verbindlichkeiten eingehen. Sie zahlen nur für die gespeicherten Softwarepakete, die Anzahl der gestellten Anfragen und die aus einer AWS-Region übertragenen Daten. CodeArtifact enthält ein monatliches kostenloses Kontingent für Speicher und Anfragen. Preisinformationen finden Sie auf der Seite mit der Preisinformationen.

CodeArtifact ist in den folgenden 13 AWS-Regionen verfügbar:

  • USA Ost (Nord-Virginia)
  • USA Ost (Ohio)
  • USA West (Oregon)
  • EU (Irland)
  • EU (London)
  • EU (Frankfurt)
  • EU (Stockholm)
  • EU (Mailand)
  • EU (Paris)
  • Asien-Pazifik (Sydney)
  • Asien-Pazifik (Tokio)
  • Asien-Pazifik (Mumbai)
  • Asien-Pazifik (Singapur)

 

Erste Schritte/Verwendung von CodeArtifact

Sie können mit der Verwendung von CodeArtifact beginnen, indem Sie eine neue Domäne und ein neues Repository mithilfe der AWS-Managementkonsoleonsole, SDKs oder CLI erstellen. Sie können dann beliebte Paketmanager und Build-Tools wie z. B. npm oder yarn CLI (JavaScript), maven oder gradle (Java), pip (Python) oder NuGet (NET) verwenden, um Pakete in Ihrem Repository zu veröffentlichen. Sie können Open-Source-Pakete auch aus öffentlichen Repositorys wie z. B. npm registry, Maven Central oder Python Package Index (PyPI), oder NuGet.org über Ihr CodeArtifact-Repository verbrauchen, in dem jedes auf diese Weise verbrauchte Paket gespeichert wird.

Eine Domäne ist ein CodeArtifact-spezifisches Konstrukt, das die Gruppierung und Verwaltung mehrerer CodeArtifact-Repositorys ermöglicht, die sich im Besitz einer einzelnen Organisation überall in mehreren AWS-Konten befinden. Eine Organisation kann z. B. ein zentrales Repository für die gemeinsame Nutzung von Paketen zwischen Teams sowie Repositorys auf Projektebene für die Speicherung von Pakete erstellen, die nur von einem einzelnen Team oder einer Anwendung verwendet werden.

Ein CodeArtifact-Repository enthält eine Reihe von Paketversionen, von denen jede einer Gruppe von Assets zugeordnet wird. Repositorys sind polyglott – ein einzelnes Repository kann Pakete beliebiger unterstützten Typen enthalten. Jedes Repository macht Endpunkte verfügbar, um Pakete mithilfe von Tools wie der npm CLI, der Maven CLI (mvn), pip und NuGet abzurufen und zu veröffentlichen. Für Ressourcenbegrenzungen im AWS CodeArtifact siehe Kontingente im AWS CodeArtifact.

Sie können Repositorys mit dem Konsolen-Assistenten oder programmgesteuert mit AWS SDKs oder CLI erstellen. Weitere Informationen finden Sie unter Erstellen Sie ein Repository in der AWS CodeArtifact-Dokumentation.

Sie können Artefakte mithilfe von sprachbezogenen Tools wie z. B. npm oder yarn (JavaScript), maven oder gradle (Java) oder twine (Python) oder NuGet (.NET) veröffentlichen. Das Veröffentlichen einer neuen Paketversion mit npm erfordert beispielsweise zwei Befehle: Führen Sie zuerst den CodeArtifact CLI-Befehl „login“ aus, und führen Sie dann npm publish aus, um das Paket in das Repository hochzuladen. Dieselben Befehle können von AWS CodeBuild ausgeführt werden, um neue Paketversionen als Teil eines Continuous Integration (CI)-Workflows zu veröffentlichen. Weitere Informationen finden Sie hier.

Sie können Artefakte mit sprachbezogenen Tools abrufen. Um beispielsweise das npm-Webpack und alle seine Abhängigkeiten zu installieren, führen Sie den CodeArtifact CLI-Befehl „login“ aus und dann führen Sie npm install webpack aus. npm ruft das Webpack aus CodeArtifact ab, führt die Abhängigkeitsauflösung basierend auf den Informationen der Webpack-Datei package.json aus und ruft dann alle erforderlichen Abhängigkeiten aus CodeArtifact rekursiv ab. Weitere Informationen finden Sie hier.

Erstellen Sie in der CodeArtifact-Konsole ein Repository mit einer externen Verbindung, um Pakete aus einem öffentlichen Repository wie der npm-Registry abzurufen. Sie können auch die AssociateExternalConnection-API verwenden, um eine Verbindung zwischen einem CodeArtifact-Repository und einem öffentlichen Repository zu erstellen. Wenn Pakete angefordert werden, ruft CodeArtifact die erforderlichen Pakete aus externen Repositorys ab und speichert sie zwischen, falls diese Pakete noch nicht vorhanden sind.

Authentifizierung und Zugriffskontrolle

Installieren Sie zunächst die AWS CLI und konfigurieren Sie AWS-Anmeldeinformationen für einen IAM-Benutzer oder eine IAM-Rolle, der/die über die entsprechende Berechtigung für den Zugriff auf CodeArtifact verfügt. Sie können dann die CLI verwenden, um die CodeArtifact-API GetAuthorizationToken aufzurufen. Diese API gibt auth-Tokens aus, die in den HTTP-Autorisierungskopf in Anfragen von Paketmanagern und Build-Tools enthalten werden können. Die CLI stellt den login-Befehl bereit, der GetAuthorizationToken aufruft und automatisch einen Paketmanager so konfiguriert, dass dieses Token für alle Anfragen verwendet werden kann. Dies ähnelt dem von Amazon ECR bereitgestellten get-login-Befehl. Entwickler, die mit ECR über die Docker-CLI interagiert haben, sind daher mit diesem Muster vertraut.

Ja. CodeArtifact-Repositorys unterstützen Ressourcenrichtlinien, um den kontoübergreifenden Zugriff zu ermöglichen. Sie können eine Ressourcenrichtlinie über die Konsole oder AWS CLI hinzufügen.

Ja. CodeArtifact unterstützt Schreibberechtigungen auf Paketebene. Sie können diese konfigurieren, indem Sie Anweisungen zu einem Dokument der Repository-Ressourcenrichtlinie hinzufügen, die einen Paket-ARN als Ressource angeben. CodeArtifact unterstützt nur Leseberechtigungen auf Repository-Ebene, d. h., ein bestimmter IAM-Prinzipal kann entweder alle Pakete in einem Repository oder keines von ihnen lesen.

Ja. Alle von CodeArtifact gespeicherten Pakete werden während der Übertragung mit TLS und im Ruhezustand mit der symmetrischen AES-256-Schlüsselverschlüsselung verschlüsselt. CodeArtifact unterstützt sowohl die von AWS Key Management Service (KMS)-Kunden verwalteten CMKs als auch die von AWS verwalteten CMKs.

Integrationen

Ja. Sie können die CodeArtifact-Repositorys angeben, die in Ihrer CodeBuild-Projektkonfiguration zum Verbrauchen und Veröffentlichen von Paketen verwendet werden sollen. Verfügbare CodeBuild-Bilder enthalten Client-Tools für alle von CodeArtifact unterstützten Pakettypen. CodeBuild konfiguriert das Build-Tool oder den Paketmanager so, dass das angegebene Repository verwendet und ein CodeArtifact-Authentifizierungstoken über die IAM-Rolle des Builds zu Beginn des Builds abgerufen wird. Sie können auch die Build-Artefakte angeben, die nach Abschluss des Builds in Ihrem CodeArtifact-Repository veröffentlicht werden sollen. CodeBuild-Builds können über CloudWatch-Ereignissen ausgelöst werden, die von einem CodeArtifact-Repository ausgesendet werden, wenn sich der Inhalt ändert.

Ja. Mit Amazon EventBridge können Sie einen CodePipeline-Build auslösen, wenn sich ein in einem CodeArtifact-Repository gespeichertes Paket ändert, z. B. wenn eine neue Version des Pakets veröffentlicht wird.

Ja. Sie können CodeArtifact-Ressourcen wie Domänen und Repositorys mit CloudFormation erstellen. Weitere Details finden Sie in der CodeArtifact-Dokumentation.