Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Amazon Kinesis putRecord AmazonServiceException_Java_Authentication_Exception_Amazon Web Services_Amazon Kinesis - Fatal编程技术网

Java Amazon Kinesis putRecord AmazonServiceException

Java Amazon Kinesis putRecord AmazonServiceException,java,authentication,exception,amazon-web-services,amazon-kinesis,Java,Authentication,Exception,Amazon Web Services,Amazon Kinesis,我是AmazonKines的新手,我想创建一个Java应用程序,将记录放入kinesis,然后将我的.class放入jmeter中,以便在beanshell示例中使用此代码。 但当我调用putRecord时,我得到了以下异常: com.amazonaws.AmazonServiceException: User: arn:aws:iam::xxxxx:user/jmeter is not authorized to perform: kinesis:PutRecord on resource:

我是AmazonKines的新手,我想创建一个Java应用程序,将记录放入kinesis,然后将我的.class放入jmeter中,以便在beanshell示例中使用此代码。 但当我调用putRecord时,我得到了以下异常:

com.amazonaws.AmazonServiceException: User: arn:aws:iam::xxxxx:user/jmeter is not authorized to perform: kinesis:PutRecord on resource: arn:aws:kinesis:eu-central-1:xxxxx:stream/jmeter (Service: AmazonKinesis; Status Code: 400; Error Code: AccessDeniedException; Request ID: xxxxx-xxxx-11e4-a036-1d3ce7b07b9e)
java代码如下所示(现在我只想连接到kinesis e,放一个简单的记录,然后放一个json数组):


异常消息几乎说明了这一点——您正在进行身份验证的用户没有在该Kinesis资源上放置记录的权限。您可能希望检查与正在进行身份验证的IAM用户/角色相关联的权限。完美,身份验证问题已修复。非常感谢。
import java.nio.ByteBuffer;

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.kinesis.AmazonKinesisClient;
import com.amazonaws.services.kinesis.model.PutRecordRequest;
import com.amazonaws.services.kinesis.model.PutRecordResult;


public class Kinesis {
    private static AmazonKinesisClient kinesisClient;
    private static final String streamName="jmeter";
    public static void main(String[] args) {
        init();
        long createTime = System.currentTimeMillis();
        PutRecordResult putRecordResult;
        PutRecordRequest putRecordRequest = new PutRecordRequest();
        putRecordRequest.setStreamName(streamName);
        putRecordRequest.setData(ByteBuffer.wrap(String.format("testData-%d", createTime).getBytes()));
        putRecordRequest.setPartitionKey(String.format("partitionKey-%d", createTime));
        try{
         putRecordResult = kinesisClient.putRecord(putRecordRequest);
         System.out.printf("Successfully put record, partition key : %s, ShardID : %s, SequenceNumber : %s.\n",
                    putRecordRequest.getPartitionKey(),
                    putRecordResult.getShardId(),
                    putRecordResult.getSequenceNumber());
        }catch(Exception e){
            System.out.println(e);
        }

    }   


    private static void init() {
        /*
         * The ProfileCredentialsProvider will return your [default]
         * credential profile by reading from the credentials file located at
         * (~/.aws/credentials).
         */
        AWSCredentials credentials = null;
        String accessKey = "myaccesskey" ;
        String secretKey = "mysecretkey/xxxx" ;
        credentials = new BasicAWSCredentials(accessKey, secretKey);
        kinesisClient = new AmazonKinesisClient(credentials);
        kinesisClient.setEndpoint("kinesis.eu-central-1.amazonaws.com","kinesis", "eu-central-1");
        System.out.println("Starting application");
        }
}