func()

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
}