Ich habe eine EC2 Ubuntu-Instanz erstellt.
Folgendes funktioniert mit dem AWS 2.6 SDK für PHP:
%Vor% Ich habe eine Credentials-Datei in ~/.aws/credentials
erstellt.
Ich stelle das in /home/ubuntu/.aws/credentials
Das folgende funktioniert nicht und gibt InstanceProfileCredentialsException
:
Es gibt einen Benutzer www-data
und einen Benutzer ubuntu
.
In welchem Ordner sollte ich die Credentials-Datei speichern?
Ich habe einen Nicht-EC2-Server, der auf SQS zugreift und Anmeldeinformationen benötigt. Ich kann envvars
nicht verwenden, weil auf diesem Server verschiedene Personen mit unterschiedlichen Rechten und envvars
global sind. Aus dem gleichen Grund glaube ich nicht, dass ich ein AWS verwenden kann Credential-Datei , die unter dem Haus eines Benutzers gespeichert ist (obwohl ich auch nicht herausfinden konnte, wie dies für Benutzer-www-Daten funktioniert).
Was ich getan habe, ist eine kleine Datei AWS_Creds.php
einzurichten %Vor% Die Datei wird außerhalb des Webstamms gespeichert und in include ('ABSOLUTEPATH/AWS_Creds.php')
eingeschlossen. Ich schließe den festverdrahteten Verweis auf die Client-Factory ein.
Elegant? Nein. Fertig? Ja.
BEARBEITEN
Ich habe vergessen zu erwähnen: Ich gitignore AWS_Creds.php, damit es nicht in unseren Repo geht.
Wenn Sie die API von einer EC2-Instanz aufrufen, sollten Sie IAM verwenden Rollen .
Die Verwendung von IAM-Rollen ist die bevorzugte Methode zum Bereitstellen von Anmeldeinformationen für Anwendungen, die auf Amazon EC2 laufen. IAM-Rollen machen das überflüssig Sorgen Sie sich in Ihrer Anwendung um die Verwaltung von Anmeldeinformationen. Sie erlauben ein Instanz zum "übernehmen" einer Rolle durch Abrufen temporärer Anmeldeinformationen von der Metadatenserver der EC2-Instanz. Diese temporären Anmeldeinformationen oft bezeichnet als Anmeldeinformationen für das Instanzprofil den Zugriff auf die Aktionen und Ressourcen, die die Rollenrichtlinie zulässt.
Grundsätzlich können Sie wie folgt verwenden:
%Vor%aber in der Dokumentation:
Beginnend mit dem AWS SDK für PHP Version 2.6.2 können Sie eine AWS-Anmeldeinformationsdatei verwenden, um Ihre Anmeldeinformationen anzugeben. Dies ist eine spezielle, INI-formatierte Datei, die in Ihrem HOME-Verzeichnis gespeichert ist. Dies ist eine gute Möglichkeit, Anmeldeinformationen für Ihre Entwicklungsumgebung zu verwalten. Die Datei sollte unter ~ / .aws / credentials abgelegt werden, wobei ~ für Ihr HOME-Verzeichnis steht.
und Verwendung:
%Vor%Weitere Informationen: Ссылка
Nachdem Sie den Quellcode Credential.php in aws / aws-sdk-php / src angesehen haben, php kann nicht direkt auf den Stammordner zugreifen. Sie können $ _SERVER ['HOME'] = [Ihren neuen Home-Pfad] in Ihrem PHP schreiben und die Berechtigungsdatei in newHomePath / .aws / credentials.
setzenDas ist viel zu spät, aber die Lösung, die ich für gemeinsam genutzte Server gefunden habe, bei denen Sie nicht in der Lage sind, Umgebungsvariablen zu verwenden, besteht darin, einen benutzerdefinierten ini-Speicherort zu definieren:
%Vor%Beachten Sie, dass Sie mit dieser Methode sogar verschiedene Profile definieren können. Dokumentation HIER
Tags und Links amazon-web-services amazon-ec2