This looks promising, Lehel. Visiting my OpenSearch home page in the AWS
dashboard, I do see that I have an IAM role associated with it. That role
is AWSServiceRoleFoirAmazonOpenSearchService.

I select that role, but don't see that I have an ACCESS_KEY or SECRET_KEY
associated with it. Its Type is AWS Managed. Looking at the top of the
dashboard for this role, it appears that the role has a REGION of Global.
My OpenSearch Service has a REGION of US East (N. Virginia).

When I created my OpenSearch service, I did so only with a master user name
and master user password. Should I instead explicitly create access and
secret keys for my Amazon OpenSearch Service? Can you say a few words
regarding how I get to these keys?

On Sat, Oct 21, 2023 at 9:51 PM Lehel Boér <lehe...@hotmail.com> wrote:

> Hi James,
>
> I'm not sure if the username/password authentication is enough in this
> case. The AWS CLI automatically handles the authentication and
> authorization for you, using the credentials you have configured for your
> CLI. This looks like an authorization issue between curl and the AWS
> service.
> Curl supports *--aws-sigv-4* requests which you can use with the access
> key of the IAM role set in OpenSearch. I managed to get it working for GET
> requests.
> https://how.wtf/aws-sigv4-requests-with-curl.html
>
> -XGET;https://$DOMAIN/$PATH;-H;'Content-Type:
> application/json';--user;$ACCES_KEY:$SECRET_KEY;--aws-sigv4;aws:amz:$REGION:es
>
> Kind Regards,
> Lehel
>
> ------------------------------
> *From:* James McMahon <jsmcmah...@gmail.com>
> *Sent:* Saturday, October 21, 2023 20:25
> *To:* users <users@nifi.apache.org>
> *Subject:* curl from ExecuteStreamCommand
>
> I have tested this curl from my ec2 command line:
> curl -XPUT -u 'myusernm:myuserpw' '
> https://vpc-rampart-test-opensearch-nrqyb7jjpvmji6cp2qcvmyhcgq.us-east-1.es.amazonaws.com/movies/_doc/1'
> -d '{"director": "Burton, Tim", "genre": ["Comedy","Sci-Fi"], "year": 1996,
> "actor": ["Jack Nicholson","Pierce Brosnan","Sarah Jessica Parker"],
> "title": "Mars Attacks!"}' -H 'Content-Type: application/json'
>
> It successfully puts the json into my Amazon OpenSearch domain.
>
> That domain in the URL above is the Domain endpoint shown on the AWS
> dashboard for its OpenSearch service.
>
> In NiFi the JSON is my flowfile content. I am trying to get my
> ExecuteStreamCommand to run the curl, but it fails. NiFi indicates it gets
> back this:
>   "message": "Request forbidden by administrative rules"
>
> This is how I have the processor configured.
> Command Arguments - -XINPUT;-u;myusernm:myuserpw;
> https://vpc-rampart-test-opensearch-nrqyb7jjpvmji6cp2qcvmyhcgq.us-east-1.es.amazonaws.com/movies/_doc/1;-H;'Content-Type:
> application/json'
> Command Path - /usr/bin/curl
> Ignore STDIN - false
> Argument Delimiter - ;
> Max Attribute Length - 256
>
> How can this be configured in the ExecuteStreamCommand processor to run
> successfully?
>
> If the ExecuteStreamCommand executes the command just as if we were at the
> command line, what is getting in the way here when I try to run this from
> NiFi?
>

Reply via email to