[PYTHON] Erstellen Sie ein privates Repository mit AWS CodeArtifact

Juni 2020 Die Brüder AWS Code werden plötzlich wiedergeboren. Der Name lautet AWS CodeArtifact. Ein privater Repository-Service, mit dem Sie Softwarepakete sicher speichern, veröffentlichen und freigeben können. Es ist in der Region Tokio bereits allgemein verfügbar und mit VPC Endpoint kompatibel.

:rocket: Introducing AWS CodeArtifact: A fully managed software artifact repository service https://aws.amazon.com/jp/about-aws/whats-new/2020/06/introducing-aws-codeartifact-a-fully-managed-software-artifact-repository-service/

Ähnliche Tools und Dienste umfassen JFrog Artifactory und GitHub Package Registry. Ich denke, Azure Artifacts ist berühmt.

Worüber freust du dich?

Ein Repository-Manager wie AWS CodeArtifact bietet zwei Hauptvorteile.

1. Offizieller Repository-Cache

Erstellen Sie bei der Entwicklung von Software ein Ökosystem wie Paketmanager für verschiedene Sprachen Es ist alltäglich geworden, es zu benutzen.

CodeArtifact kann als Proxy für entsprechende Paketmanager wie maven und npm verwendet werden. Administratoren können den Zugriff auf Pakete steuern und sind für die Verwendung innerhalb der Organisation zugelassen Entwicklern stehen nur die neuesten Pakete zur Verfügung.

Abhängig von den Richtlinien Ihres Unternehmens können Sie möglicherweise nicht frei auf das öffentliche Repository zugreifen. Durch die Verwendung von VPC Endpoint wurde es in CodeArtifact zwischengespeichert, ohne über das Internet zu gehen. Sie können auf das Paket zugreifen. Sie können auch eine Verkürzung der Downloadzeit erwarten.

Ab Juni 2020 werden folgende externe Verbindungen unterstützt. Es scheint das Minimum im Vergleich zu den Dienstleistungen anderer Unternehmen zu sein, aber ich freue mich auf zukünftige Updates.

Type Description
npm npm public registry
Python Python Package Index
Maven Maven Central
Maven Google Android repository
Maven Gradle plugins repository
Maven CommonsWare Android repository

2. Verwalten Sie Ihre eigenen Pakete

CodeArtifact bietet einen zentralen Ort zum Speichern von Paketen, die in Ihrer Organisation erstellt wurden. Weil die gespeicherten Pakete sicher freigegeben und vorhandenen Paketmanagern zur Verfügung gestellt werden können Dies reduziert die Entwicklungszeit.

Wichtige Konzepte, die Sie in CodeArtifact beachten sollten

Repository

Sie können mehrere Repositorys in Ihrem Konto erstellen. (Maximal 100) Ein Repository kann Pakete in mehreren unterstützten Sprachen enthalten. Das Repository ist die Einheit des Endpunkts, wenn von jedem Paketmanager aus darauf zugegriffen wird.

Domain

CodeArtifact ist ein einzigartiges Konzept. Verwalten Sie jedes Repository in einer einzelnen Domäne.

Jedes Paket wird über ein Repository verwendet, aber die tatsächlichen Daten sind kein Repository Es wird in der Domain gespeichert. Bestimmte Pakete in mehreren Repositorys innerhalb derselben Domäne Selbst wenn Sie es verwenden, wird es unabhängig von der Anzahl der Repositorys nur einmal gespeichert. Mit anderen Worten, Speichergebühren werden nicht dupliziert.

Domains sind auch für Cross-Accounts verfügbar. Erstellen Sie eine gemeinsame Domain für Ihre Organisation Jedes Konto kann ein eigenes Repository verwenden. image.png

Upstream-Repository

Jedes Repository kann als Upstream-Repository auf ein anderes Repository festgelegt werden. Dies macht es zu einem gemeinsamen Repository innerhalb der Organisation, einem Repository für Entwicklungsteams usw. Selbst wenn sie getrennt sind, kann der Client von einem einzelnen Endpunkt aus auf sie zugreifen. image.png

Domänenrichtlinie und Repository-Richtlinie

Es kann im bekannten JSON-Format eingestellt werden.

Domänenrichtlinieneinstellungen für Konten in Ihrer Organisation oder für bestimmte IAM-Principals Sie können den Zugriff auf die Domain zulassen.

Wenn Sie eine Ressourcenrichtlinie definieren, gilt dies auch für Benutzer, die auf das Repository zugreifen können, und für das Repository Sie können die Aktionen angeben, die ausgeführt werden können. Infolgedessen wird im Fall des obigen Konfigurationsbeispiels nur die Leseberechtigung innerhalb der Organisation im freigegebenen Repository der Organisation festgelegt. Das Repository des Entwicklungsteams kann so konfiguriert werden, dass nur Entwickler lesen und schreiben können.

Versuchen

Domänen und Repositorys erstellen

Wählen Sie oben in der CodeArtifact-Konsole Repository erstellen aus. image.png Geben Sie den Repository-Namen und die Einstellungen für das öffentliche Upstream-Repository ein Wählen Sie das offizielle Repository aus, das zwischengespeichert werden soll. image.png Wählen Sie dann die Domain aus, in der Sie das Repository registrieren möchten. Wir haben noch keine Domain für dieses Konto erstellt. Geben Sie daher einen Domainnamen an und erstellen Sie einen neuen. Mit zusätzlichen Einstellungen können Sie den KMS-Schlüssel auswählen, der für die Verschlüsselung verwendet werden soll, entweder verwaltetes oder spezifisches CMK. image.png Überprüfen Sie abschließend die Einstellungen und erstellen Sie ein Repository und eine Domäne. image.png Wie Sie dem Paketfluss entnehmen können, im Assistenten zum Erstellen von Repositorys Es stehen nur öffentliche Upstream-Repositorys zur Auswahl. Um ein anderes Repository als Upstream-Repository festzulegen, klicken Sie nach dem Erstellen des Repositorys auf Bearbeiten Muss eingestellt werden. image.png

So verbinden Sie das Repository

AWS CLI v2.0.21 oder höher ist erforderlich, um die Verbindungsinformationen des erstellten Repositorys abzurufen. Sie können den spezifischen Verbindungsbefehl für jedes Tool im Repository-Bildschirm der Konsole überprüfen. image.png Im Fall von pip ist dies beispielsweise wie folgt. Die Option --domain-owner ist für das Konto, mit dem die Domain erstellt wurde, optional.

$ aws codeartifact login --tool pip --repository my-repo --domain my-domain --domain-owner 0123456789012
Successfully logged in to codeartifact for pip.

Intern scheint es, dass der Pip-Konfigurationssatz global.index-url automatisch setzt. Sie können die Endpunkte des Repositorys mit den Anmeldeinformationen in der Pip-Konfigurationsliste sehen. Dieser Berechtigungsnachweis läuft nach 12 Stunden ab und muss jedes Mal durchgeführt werden.

Verwenden Sie alternativ den Befehl aws codeartifact get-authorisation-token, um nur das Authentifizierungstoken abzurufen. Sie können den Konfigurationssatz auch manuell festlegen.

Es scheint, dass der Abmeldebefehl nicht vorbereitet ist, um ihn abzubrechen Es scheint keine andere Wahl zu geben, als pip config unset global.index-url auszuführen.

Öffentlicher Repository-Cache

Wenn Sie versuchen, die AWS SAM CLI zu installieren, sehen Sie, dass sie von CodeArtifact heruntergeladen wurde.

$ pip install -U aws-sam-cli
Collecting aws-sam-cli
  Downloading https://my-domain-123456789012.d.codeartifact.ap-northeast-1.amazonaws.com/pypi/my-repo/simple/aws-sam-cli/0.52.0/aws_sam_cli-0.52.0-py3-none-any.whl (443kB)

Sie können auch sehen, dass es im erstellten Repository auf der Konsole registriert ist. Tatsächlich stellt das öffentliche Upstream-Repository pypi-store eine Verbindung zu PyPI her und speichert es zwischen. image.png

Teilen Sie Ihr eigenes Paket

Hier finden Sie das Tutorial zum Python Packaging-Benutzerhandbuch Versuchen Sie, ein Beispielprojekt in CodeArtifact hochzuladen.

Klonen Sie https://github.com/pypa/sampleproject.

$ git clone https://github.com/pypa/sampleproject.git
Cloning into 'sampleproject'...
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 441 (delta 7), reused 6 (delta 1), pack-reused 420
Receiving objects: 100% (441/441), 116.64 KiB | 365.00 KiB/s, done.
Resolving deltas: 100% (216/216), done.

Paket mit dem folgenden Befehl.

$ cd sampleproject
$ python setup.py bdist_wheel

Für Python ist eine Schnur erforderlich, um das Paket hochzuladen. Installieren Sie es daher.

$ pip install -U twine

Legen Sie die Garnanmeldeinformationen mit dem Anmeldebefehl fest. Intern werden die Einstellungen für die CodeArtifact-Verbindung zu ~ / .pypirc hinzugefügt.

$ aws codeartifact login --tool twine --repository my-repo --domain my-domain
Successfully logged in to codeartifact for twine.

Laden Sie mit dem folgenden Befehl auf CodeArtifact hoch.

$ twine upload -r codeartifact dist/*
Uploading distributions to https://my-domain-123456789012.d.codeartifact.ap-northeast-1.amazonaws.com/pypi/my-repo/
Uploading sampleproject-1.3.1-py3-none-any.whl

Ich konnte bestätigen, dass es auch auf die Konsole hochgeladen wurde. Sie können ganz einfach Ihr eigenes Paket teilen. image.png

Referenz

** AWS CodeArtifact-Produktseite ** https://aws.amazon.com/jp/codeartifact/ CodeArtifact User Guide https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html ** Veröffentlichen / Hochladen einer in Python erstellten Bibliothek auf PyPI ** https://qiita.com/icoxfog417/items/edba14600323df6bf5e0

das ist alles. Ich bin froh, wenn Sie es als Referenz verwenden können.

Recommended Posts

Erstellen Sie ein privates Repository mit AWS CodeArtifact
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Erstellen Sie ein Verzeichnis mit Python
[AWS] API mit API Gateway + Lambda erstellen
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie einen Poisson-Stepper mit numpy.random
Erstellen Sie mit Django einen Datei-Uploader
Stellen Sie private Inhalte mit AWS CloudFront bereit
[AWS Hands-on] Erstellen wir einen Promi-Identifikationsdienst mit einer serverlosen Architektur!
Erstellen Sie mit BigQuery ein privates DMP ohne Anfangskosten und ohne Entwicklung
So erstellen Sie mit AWS Lambda eine serverlose API für maschinelles Lernen
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen Sie mit Python + PIL ein Dummy-Image.
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Erstellen Sie eine GUI-App mit Tkinter of Python
Geben Sie eine signierte URL mit AWS SQS aus
Erstellen Sie eine große Textdatei mit Shellscript
VM mit YAML-Datei (KVM) erstellen
Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler
So erstellen Sie ein Repository aus Medien
Erstellen Sie mit NetworkX einen verbindenden nächsten Nachbarn
Erstellen Sie einen Webdienst mit Docker + Flask
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Erstellen Sie ein teuflisches Bild mit Blenders Skript
Erstellen Sie eine Matrix mit PythonGUI (Textfeld)
Erstellen Sie ein Diagramm mit Rändern, die mit matplotlib entfernt wurden
[AWS] Erstellen Sie mit CodeStar eine Python Lambda-Umgebung und führen Sie Hello World aus
Erstellen wir eine Chat-Funktion mit Vue.js + AWS Lambda + Dynamo DB [AWS-Einstellungen]
Erstellen Sie mit tkinter [Python] einen Rahmen mit transparentem Hintergrund.
[AWS SAM] Erstellen Sie eine API mit DynamoDB + Lambda + API Gateway
Erstellen Sie mit pulumi eine WardPress-Umgebung auf AWS
Erstellen Sie mit AWS Lambda einen Bot, der Instanzen mit bestimmten Tags automatisch startet / stoppt
Versuchen Sie Tensorflow mit einer GPU-Instanz unter AWS
Erstellen Sie eine mit tkinter erstellte ausführbare GUI-Datei
Erstellen Sie mit Minette für Python einen LINE BOT
Erstelle mit pygame2 eine neue Benutzeroberfläche!
Erstellen Sie eine PDF-Datei mit einer zufälligen Seitengröße
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird
[Hinweis] Erstellen Sie mit Python eine einzeilige Zeitzonenklasse
Sie können auch mit Python problemlos eine GUI erstellen
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Pipenv-Installation mit ssh aus dem privaten Bitbucket-Repository
Erstellen Sie ein billiges Zusammenfassungssystem mit AWS-Komponenten
Erstellen Sie ein Bulletin Board mit Heroku, Flask, SQL Alchemy
Erstellen Sie mit Django ein Dashboard für Netzwerkgeräte!
Erstellen Sie eine Matrix mit PythonGUI (tkinter-Kombinationsfeld)
Erstellen Sie eine Farbleiste mit Python + Qt (PySide)
Schritte zum Erstellen eines Twitter-Bots mit Python
Erstellen Sie mit Python einen Entscheidungsbaum von 0 (1. Übersicht)
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
Erstellen Sie mit Python + Qt (PySide) ein farbspezifisches Widget.
Verfahren zur Erstellung plattformübergreifender Apps mit kivy
Erstellen Sie mit Django eine Hallo-Welt-Anwendung mit nur einer Datei
AWS-Schrittfunktionen zum Lernen anhand eines Beispiels
Erstellen Sie mit Python eine Datei im Photoshop-Format (.psd)
Erstellen Sie einfach eine Python-Konsolenanwendung mit Click