Here you go. Names changed to protect the innocent. :-)

{
    "Version": "2012-10-17",
    "Id": "Policy1527067401408",
    "Statement": [
        {
            "Sid": "AccessForEventServerRole",
            "Effect": "Allow",
            "Principal": {
                "AWS":   "arn:aws:iam::XXXXXXXXXXXX:role/event-server-s3-role"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-bucket-name",
                "arn:aws:s3:::my-bucket-name/*"
            ]
        }
    ]
}

> On Apr 25, 2019, at 3:06 PM, iain wright <iainw...@gmail.com> wrote:
> 
> Could you please share the IAM policy attached to the role granting 
> permission to the bucket, as well the bucket policy, if one is present?
> 
> Please remove or obfuscate bucket names, account number, etc.
> 
> The policy on the role or bucket is most certainly a missing permission, 
> rename requires a few odd ones in addition to the usual actions, ie:
> 
> "s3:GetObjectVersion", "s3:DeleteObjectVersion",
> "s3:PutObjectAcl", 
> "s3:GetObjectAcl"
>  
> 
> Sent from my iPhone
> 
> On Apr 25, 2019, at 2:32 PM, Guyle M. Taber <gu...@gmtech.net 
> <mailto:gu...@gmtech.net>> wrote:
> 
>> I’m using a new flume sink to S3 that doesn’t seem to successfully close out 
>> .tmp files created in S3 buckets. So I’m essentially getting a whole lot of 
>> unclosed .tmp files.
>> 
>> The IAM role being used has full S3 permissions to this bucket.
>> 
>> Here’s the flume error when trying to rename and close the file (cp & delete)
>> 
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> 25 Apr 2019 21:20:01,522 ERROR [hdfs-S3Sink-call-runner-7] 
>> (org.apache.hadoop.fs.s3a.S3AFileSystem.deleteObjects:1151)  - 
>> button/qa1-event1/: "AccessDenied" - Access Denied
>> 25 Apr 2019 21:20:01,675 WARN  [hdfs-S3Sink-roll-timer-0] 
>> (org.apache.flume.sink.hdfs.BucketWriter.close:427)  - failed to rename() 
>> file (s3a://my-bucket-name/button/qa1-event1/FlumeData.1556226600899.tmp 
>> <s3a://my-bucket-name/button/qa1-event1/FlumeData.1556226600899.tmp>). 
>> Exception follows.
>> java.nio.file.AccessDeniedException: 
>> s3a://my-bucket-name/button/qa1-event1/FlumeData.1556226600899.tmp: 
>> <s3a://my-bucket-name/button/qa1-event1/FlumeData.1556226600899.tmp:> 
>> getFileStatus on s3a://my- 
>> <s3a://my->bucket-name/button/qa1-event1./FlumeData.1556226600899.tmp: 
>> com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: 
>> Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: 
>> 68D5110FD4C0C1DA), S3 Extended Request ID: 
>> xk9gb+hY0NUrqAQS9NQW6dDZL35p0I4SpO57b/o9YZucaVtuk1igtPfYaQZTgEfPrHepyxm6+q8=
>>      at 
>> org.apache.hadoop.fs.s3a.S3AUtils.translateException(S3AUtils.java:177)
>>      at 
>> org.apache.hadoop.fs.s3a.S3AUtils.translateException(S3AUtils.java:120)
>>      at 
>> org.apache.hadoop.fs.s3a.S3AFileSystem.s3GetFileStatus(S3AFileSystem.java:1886)
>>      at 
>> org.apache.hadoop.fs.s3a.S3AFileSystem.innerGetFileStatus(S3AFileSystem.java:1855)
>>      at 
>> org.apache.hadoop.fs.s3a.S3AFileSystem.getFileStatus(S3AFileSystem.java:1799)
>>      at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1418)
>>      at 
>> org.apache.hadoop.fs.s3a.S3AFileSystem.exists(S3AFileSystem.java:2529)
>>      at org.apache.flume.sink.hdfs.BucketWriter$8.call(BucketWriter.java:654)
>>      at org.apache.flume.sink.hdfs.BucketWriter$8.call(BucketWriter.java:651)
>>      at 
>> org.apache.flume.sink.hdfs.BucketWriter$9$1.run(BucketWriter.java:701)
>>      at 
>> org.apache.flume.auth.SimpleAuthenticator.execute(SimpleAuthenticator.java:50)
>>      at org.apache.flume.sink.hdfs.BucketWriter$9.call(BucketWriter.java:698)
>>      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>>      at 
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>>      at 
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>>      at java.lang.Thread.run(Thread.java:748)
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> 
>> Here’s my S3 sink.
>> 
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> agent.sinks.S3Sink.type = hdfs
>> agent.sinks.S3Sink.hdfs.path = s3a://my-bucket-name/ <s3a://my-bucket-name/>
>> agent.sinks.S3Sink.channel = S3Channel
>> agent.sinks.S3Sink.hdfs.fileType = DataStream
>> agent.sinks.S3Sink.hdfs.writeFormat = Text
>> agent.sinks.S3Sink.hdfs.rollCount = 0
>> agent.sinks.S3Sink.hdfs.rollSize = 0
>> agent.sinks.S3Sink.hdfs.batchSize = 10000
>> agent.sinks.S3Sink.hdfs.rollInterval = 600
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Reply via email to