Speicherort für die Anmeldeinformationsdatei für AWS PHP SDK

7

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

%Vor%

Das folgende funktioniert nicht und gibt InstanceProfileCredentialsException :

%Vor%

Es gibt einen Benutzer www-data und einen Benutzer ubuntu .
In welchem ​​Ordner sollte ich die Credentials-Datei speichern?

    
Guus 16.06.2014, 17:39
quelle

6 Antworten

2

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.

    
Mark Kasson 18.09.2014, 03:00
quelle
8

Eine Lösung zum Festlegen der Anmeldeinformationen ist:

sudo nano /etc/apache2/envvars

Umgebungsvariablen hinzufügen:

%Vor%

sudo service apache2 restart

Danach funktioniert Folgendes:

%Vor%     
Guus 17.06.2014 08:02
quelle
5

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.

    
magnetik 04.09.2014 08:28
quelle
2

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: Ссылка

    
mst 19.03.2015 17:13
quelle
1

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.

setzen     
Xing-Wei Lin 21.12.2014 15:43
quelle
1

Das 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

    
JMZ 18.04.2017 13:21
quelle