Amazon web services 未找到aws凭据错误
我有一个jar上传到aws lambda,但它不断抛出以下错误:Amazon web services 未找到aws凭据错误,amazon-web-services,aws-lambda,aws-java-sdk,Amazon Web Services,Aws Lambda,Aws Java Sdk,我有一个jar上传到aws lambda,但它不断抛出以下错误: { "errorMessage": "java.lang.NullPointerException", "errorType": "java.lang.NullPointerException", "stackTrace": [ "com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:143)",
{
"errorMessage": "java.lang.NullPointerException",
"errorType": "java.lang.NullPointerException",
"stackTrace": [
"com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:143)",
"com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:132)",
"com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:99)",
"com.amazonaws.auth.profile.ProfileCredentialsProvider.getCredentials(ProfileCredentialsProvider.java:135)",
"com.amazonaws.http.AmazonHttpClient.getCredentialsFromContext(AmazonHttpClient.java:802)",
"com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:828)",
"com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:723)",
"com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:475)",
"com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:437)",
"com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:386)",
"com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:2074)",
"com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:2044)",
"com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.putItem(AmazonDynamoDBClient.java:1580)",
"com.amazonaws.services.dynamodbv2.document.internal.PutItemImpl.doPutItem(PutItemImpl.java:85)",
"com.amazonaws.services.dynamodbv2.document.internal.PutItemImpl.putItem(PutItemImpl.java:41)",
"com.amazonaws.services.dynamodbv2.document.Table.putItem(Table.java:144)",
"augury.api.SaveAuguryApi.handleRequest(SaveAuguryApi.java:46)",
"sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
"sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)",
"sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
"java.lang.reflect.Method.invoke(Method.java:498)"
]
}
{
“errorMessage”:“java.lang.NullPointerException”,
“errorType”:“java.lang.NullPointerException”,
“stackTrace”:[
“com.amazonaws.auth.profile.ProfilesConfigFile.(ProfilesConfigFile.java:143)”,
“com.amazonaws.auth.profile.ProfilesConfigFile.(ProfilesConfigFile.java:132)”,
“com.amazonaws.auth.profile.ProfilesConfigFile.(ProfilesConfigFile.java:99)”,
“com.amazonaws.auth.profile.ProfileCredentialsProvider.getCredentials(ProfileCredentialsProvider.java:135)”,
“com.amazonaws.http.AmazonHttpClient.getCredentialsFromContext(AmazonHttpClient.java:802)”,
“com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:828)”,
“com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:723)”,
“com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:475)”,
“com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:437)”,
“com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:386)”,
“com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:2074)”,
“com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:2044)”,
“com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.putItem(AmazonDynamoDBClient.java:1580)”,
“com.amazonaws.services.dynamodbv2.document.internal.PutItemImpl.doPutItem(PutItemImpl.java:85)”,
“com.amazonaws.services.dynamodbv2.document.internal.PutItemImpl.putItem(PutItemImpl.java:41)”,
“com.amazonaws.services.dynamodbv2.document.Table.putItem(Table.java:144)”,
“augury.api.SaveAuguryApi.HandlerRequest(SaveAuguryApi.java:46)”,
“sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)”,
“sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)”,
“sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)”,
“java.lang.reflect.Method.invoke(Method.java:498)”
]
}
和堆栈跟踪:
java.lang.NullPointerException: java.lang.NullPointerException
java.lang.NullPointerException
at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:143)
at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:132)
at com.amazonaws.auth.profile.ProfilesConfigFile.<init>(ProfilesConfigFile.java:99)
at com.amazonaws.auth.profile.ProfileCredentialsProvider.getCredentials(ProfileCredentialsProvider.java:135)
at com.amazonaws.http.AmazonHttpClient.getCredentialsFromContext(AmazonHttpClient.java:802)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:828)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:723)
at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:475)
at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:437)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:386)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:2074)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:2044)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.putItem(AmazonDynamoDBClient.java:1580)
at com.amazonaws.services.dynamodbv2.document.internal.PutItemImpl.doPutItem(PutItemImpl.java:85)
at com.amazonaws.services.dynamodbv2.document.internal.PutItemImpl.putItem(PutItemImpl.java:41)
at com.amazonaws.services.dynamodbv2.document.Table.putItem(Table.java:144)
at augury.api.SaveAuguryApi.handleRequest(SaveAuguryApi.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
END RequestId: b2b9807e-6a09-11e6-9873-2588e6cfa497
REPORT RequestId: b2b9807e-6a09-11e6-9873-2588e6cfa497 Duration: 305.85 ms Billed Duration: 400 ms Memory Size: 512 MB Max Memory Used: 61 MB
java.lang.NullPointerException:java.lang.NullPointerException
java.lang.NullPointerException
在com.amazonaws.auth.profile.ProfilesConfigFile上。(ProfilesConfigFile.java:143)
位于com.amazonaws.auth.profile.ProfilesConfigFile.(ProfilesConfigFile.java:132)
位于com.amazonaws.auth.profile.ProfilesConfigFile.(ProfilesConfigFile.java:99)
在com.amazonaws.auth.profile.ProfileCredentialsProvider.getCredentials上(ProfileCredentialsProvider.java:135)
在com.amazonaws.http.AmazonHttpClient.getCredentialsFromContext(AmazonHttpClient.java:802)上
在com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:828)上
在com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:723)
位于com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:475)
在com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:437)上
在com.amazonaws.http.AmazonHttpClient.execute上(AmazonHttpClient.java:386)
位于com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:2074)
位于com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:2044)
位于com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.putItem(AmazonDynamoDBClient.java:1580)
位于com.amazonaws.services.dynamodbv2.document.internal.putitempl.doPutItem(PutItemImpl.java:85)
位于com.amazonaws.services.dynamodbv2.document.internal.PutItemImpl.putItem(PutItemImpl.java:41)
位于com.amazonaws.services.dynamodbv2.document.Table.putItem(Table.java:144)
SaveAuguryApi.handleRequest(SaveAuguryApi.java:46)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
结束请求ID:b2b9807e-6a09-11e6-9873-2588e6cfa497
报告请求ID:b2b9807e-6a09-11e6-9873-2588e6cfa497持续时间:305.85毫秒计费持续时间:400毫秒内存大小:512 MB最大使用内存:61 MB
还有我的lambda java代码:
package augury.api;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Item;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import augury.pojo.AuguryResponse;
import augury.pojo.AuguryResult;
public class SaveAuguryApi implements RequestHandler<AuguryResult, AuguryResponse> {
// Initialize the Log4j logger.
static final Logger log = Logger.getLogger(SaveAuguryApi.class);
static DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient(new ProfileCredentialsProvider()));
static String tableName = "tarot_history";
public AuguryResponse handleRequest(AuguryResult result, Context context) {
String userId = result.getUserId();
List<Integer> tarotIds = result.getTarotIds();
String createTime = result.getCreate_time();
if (log.isDebugEnabled()) {
log.debug("requestId = " + context.getAwsRequestId() + ", userId = " + userId + ", tarotIds = " + tarotIds
+ ", create_time = " + createTime);
}
if (StringUtils.isBlank(userId) || tarotIds == null || tarotIds.isEmpty() || StringUtils.isBlank(createTime)) {
return new AuguryResponse(400, "this request doesn't contain rightful parameters, please check log");
}
Table table = dynamoDB.getTable(tableName);
Item item = new Item();
item.withString("create_time", createTime);
item.withString("user_id", userId);
item.withList("tarot_ids", tarotIds);
item.withInt("id", 1);
table.putItem(item);
return new AuguryResponse(201, "tarot history created");
}
}
package augury.api;
导入java.util.List;
导入org.apache.commons.lang3.StringUtils;
导入org.apache.log4j.Logger;
导入com.amazonaws.auth.profile.ProfileCredentialsProvider;
导入com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
导入com.amazonaws.services.dynamodbv2.document.DynamoDB;
导入com.amazonaws.services.dynamodbv2.document.Item;
导入com.amazonaws.services.dynamodbv2.document.Table;
导入com.amazonaws.services.lambda.runtime.Context;
导入com.amazonaws.services.lambda.runtime.RequestHandler;
导入augury.pojo.AuguryResponse;
导入augury.pojo.AuguryResult;
公共类SaveAuguryApi实现RequestHandler您正在查看的示例假设您已将凭据属性保存到文件中,而在Lambda环境中不会这样。要使用分配给Lambda函数的IAM角色,请更改以下内容:
static DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient(new ProfileCredentialsProvider()));
为此:
static DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient());
您的标题显示您收到一条“未找到凭据”错误消息,但您实际发布的错误消息是“空指针异常”。为什么您要使用ProfileCredentialsProvider
?你应该给Lambda函数分配一个IAM角色,让AWS SDK自动使用它。嗨,我想我已经把IAM角色分配给Lambda了。如果我不使用ProfileCredentialsProvider,我如何通过lamdba函数将文档插入到dynamodb?谢谢,顺便说一句,我发现如果我想让lambda将Item放入dynamodb中的表中,我需要使用策略向其添加一个角色