in pkg/apmclient/client.go [99:126]
func (c *Client) CreateAgentAPIKey(ctx context.Context, expiration time.Duration) (string, error) {
name := "apm-agent"
var maybeExpiration types.Duration
if expiration > 0 {
maybeExpiration = formatDurationElasticsearch(expiration)
}
resp, err := c.es.Security.CreateApiKey().Request(&createapikey.Request{
Name: &name,
Expiration: maybeExpiration,
RoleDescriptors: map[string]types.RoleDescriptor{
"apm": {
Applications: []types.ApplicationPrivileges{{
Application: "apm",
Resources: []string{"*"},
Privileges: []string{"event:write", "config_agent:read"},
}},
},
},
Metadata: map[string]json.RawMessage{
"application": []byte(`"apm"`),
"creator": []byte(`"apmclient"`),
},
}).Do(ctx)
if err != nil {
return "", fmt.Errorf("error creating agent API Key: %w", err)
}
return resp.Encoded, nil
}