2

我正在使用以下代码在本地连接 dynamoDb

$dotenv = new Dotenv\Dotenv(dirname(__DIR__, 2));
    $dotenv->load();
    $this->key = getenv('aws_access_key_id');
    $this->secret = getenv('aws_secret_access_key');
    $this->dynamodb = new DynamoDbClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => 'latest',
        'credentials' => [
            'key' => $this->key,
            'secret' => $this->secret,
        ]
    ]);

我的.env档案

aws_access_key_id = ....
aws_secret_access_key = ....

我收到此错误

Type: Aws\Exception\CredentialsException
Message: Cannot read credentials from /Users/user/.aws/credentials
File: /path/to/project/vendor/aws/aws-sdk-php/src/Credentials/CredentialProvider.php
Line: 394

access key也尝试了&的基本硬编码,secret key但它似乎并没有在每次从默认路径获取时都有效~/.aws/credentials

TIA

4

2 回答 2

3

尝试不指定:

'profile' => 'default'

您希望使用在凭证文件中指定的默认配置文件。SDK 可能会查看此行并尝试打开凭证文件并查找default配置文件。我没有安装 PHP SDK 来验证这一点..

于 2017-10-22T07:35:29.477 回答
2

尝试打印环境变量以确保您的应用程序正在获取这些环境变量。

它不是从这些变量中找到的。您需要在运行此脚本之前导出它们。

希望能帮助到你。

编辑1:

use Aws\Common\Credentials\Credentials;

$credentials = new Credentials('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY');

//将这些凭据分配给 Dynamodbclient

EDIT2: AWS SDK 3.x 遵循不同的初始化方式。

$sdk = new Aws\Sdk([
    'credentials' => $credentials,
    'region' => 'us-east-1',
    'version' => 'latest',
    'DynamoDb' => [
        'region' => 'us-west-2',
    ],
]);

$dynamodb = $sdk->createDynamoDb();  // This is dynamodb client
于 2017-10-22T03:18:07.657 回答