Merge branch 'public-single-node' into pmm-6401-read-prometheus-data-files

This commit is contained in:
Aliaksandr Valialkin 2023-04-03 01:08:56 -07:00
commit 20fedaf7c2
No known key found for this signature in database
GPG key ID: A72BEC6CD3D0DED1
91 changed files with 1980 additions and 989 deletions

View file

@ -1,14 +1,14 @@
{
"files": {
"main.css": "./static/css/main.e0a028b9.css",
"main.js": "./static/js/main.e5645090.js",
"main.css": "./static/css/main.ebde9e58.css",
"main.js": "./static/js/main.ee50e2ce.js",
"static/js/27.c1ccfd29.chunk.js": "./static/js/27.c1ccfd29.chunk.js",
"static/media/Lato-Regular.ttf": "./static/media/Lato-Regular.d714fec1633b69a9c2e9.ttf",
"static/media/Lato-Bold.ttf": "./static/media/Lato-Bold.32360ba4b57802daa4d6.ttf",
"index.html": "./index.html"
},
"entrypoints": [
"static/css/main.e0a028b9.css",
"static/js/main.e5645090.js"
"static/css/main.ebde9e58.css",
"static/js/main.ee50e2ce.js"
]
}

View file

@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/><meta name="theme-color" content="#000000"/><meta name="description" content="UI for VictoriaMetrics"/><link rel="apple-touch-icon" href="./apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="./favicon-32x32.png"><link rel="manifest" href="./manifest.json"/><title>VM UI</title><script src="./dashboards/index.js" type="module"></script><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="./preview.jpg"><meta name="twitter:title" content="UI for VictoriaMetrics"><meta name="twitter:description" content="Explore and troubleshoot your VictoriaMetrics data"><meta name="twitter:site" content="@VictoriaMetrics"><meta property="og:title" content="Metric explorer for VictoriaMetrics"><meta property="og:description" content="Explore and troubleshoot your VictoriaMetrics data"><meta property="og:image" content="./preview.jpg"><meta property="og:type" content="website"><script defer="defer" src="./static/js/main.e5645090.js"></script><link href="./static/css/main.e0a028b9.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/><meta name="theme-color" content="#000000"/><meta name="description" content="UI for VictoriaMetrics"/><link rel="apple-touch-icon" href="./apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="./favicon-32x32.png"><link rel="manifest" href="./manifest.json"/><title>VM UI</title><script src="./dashboards/index.js" type="module"></script><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="./preview.jpg"><meta name="twitter:title" content="UI for VictoriaMetrics"><meta name="twitter:description" content="Explore and troubleshoot your VictoriaMetrics data"><meta name="twitter:site" content="@VictoriaMetrics"><meta property="og:title" content="Metric explorer for VictoriaMetrics"><meta property="og:description" content="Explore and troubleshoot your VictoriaMetrics data"><meta property="og:image" content="./preview.jpg"><meta property="og:type" content="website"><script defer="defer" src="./static/js/main.ee50e2ce.js"></script><link href="./static/css/main.ebde9e58.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,53 @@
import React, { FC } from "preact/compat";
import "./style.scss";
import Button from "../../Main/Button/Button";
import { TipIcon } from "../../Main/Icons";
import Tooltip from "../../Main/Tooltip/Tooltip";
import Modal from "../../Main/Modal/Modal";
import useBoolean from "../../../hooks/useBoolean";
import tips from "./contants/tips";
const GraphTips: FC = () => {
const {
value: showTips,
setFalse: handleCloseTips,
setTrue: handleOpenTips
} = useBoolean(false);
return (
<>
<Tooltip title={"Show tips on working with the graph"}>
<Button
variant="text"
color={"gray"}
startIcon={<TipIcon/>}
onClick={handleOpenTips}
/>
</Tooltip>
{showTips && (
<Modal
title={"Tips on working with the graph and the legend"}
onClose={handleCloseTips}
>
<div className="fc-graph-tips">
{tips.map(({ title, description }) => (
<div
className="fc-graph-tips-item"
key={title}
>
<h4 className="fc-graph-tips-item__action">
{title}
</h4>
<p className="fc-graph-tips-item__description">
{description}
</p>
</div>
))}
</div>
</Modal>
)}
</>
);
};
export default GraphTips;

View file

@ -0,0 +1,67 @@
import React from "react";
import { isMacOs } from "../../../../utils/detect-device";
import { DragIcon, SettingsIcon } from "../../../Main/Icons";
const metaKey = <code>{isMacOs() ? "Cmd" : "Ctrl"}</code>;
const graphTips = [
{
title: "Zoom in",
description: <>
To zoom in, hold down the {metaKey} + <code>scroll up</code>, or press the <code>+</code>.
Also, you can zoom in on a range on the graph by holding down your mouse button and selecting the range.
</>,
},
{
title: "Zoom out",
description: <>
To zoom out, hold down the {metaKey} + <code>scroll down</code>, or press the <code>-</code>.
</>,
},
{
title: "Move horizontal axis",
description: <>
To move the graph, hold down the {metaKey} + <code>drag</code> the graph to the right or left.
</>,
},
{
title: "Fixing a tooltip",
description: <>
To fix the tooltip, <code>click</code> mouse when it&#39;s open.
Then, you can drag the fixed tooltip by <code>clicking</code> and <code>dragging</code> on the <DragIcon/> icon.
</>
},
{
title: "Set a custom range for the vertical axis",
description: <>
To set a custom range for the vertical axis,
click on the <SettingsIcon/> icon located in the upper right corner of the graph,
activate the toggle, and set the values.
</>
},
];
const legendTips = [
{
title: "Show/hide a legend item",
description: <>
<code>click</code> on a legend item to isolate it on the graph.
{metaKey} + <code>click</code> on a legend item to remove it from the graph.
To revert to the previous state, click again.
</>
},
{
title: "Copy key-value pairs",
description: <>
<code>click</code> on a key-value pair to save it to the clipboard.
</>
},
{
title: "Collapse/Expand the legend group",
description: <>
<code>click</code> on the group name (e.g. <b>Query 1: &#123;name!=&#34;&#34;&#125;</b>) to collapse or expand the legend.
</>
},
];
export default graphTips.concat(legendTips);

View file

@ -0,0 +1,49 @@
@use "src/styles/variables" as *;
.fc-graph-tips {
max-width: 520px;
display: grid;
gap: $padding-global;
&-item {
display: grid;
gap: $padding-small;
line-height: 1.3;
padding-bottom: $padding-global;
border-bottom: $border-divider;
&__action {
color: $color-text-secondary;
font-weight: bold;
}
&__description {
display: inline-block;
line-height: 20px;
svg,
code {
min-height: 20px;
min-width: 20px;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0 4px;
font-size: $font-size-small;
color: $color-text;
background-color: $color-background-body;
border: $border-divider;
border-radius: $border-radius-small;
margin: 0 2px 2px;
}
}
svg {
width: 18px;
color: $color-primary;
padding: 2px;
margin-top: -8px;
transform: translateY(8px);
}
}
}

View file

@ -1,6 +1,7 @@
import React, { FC, useMemo } from "preact/compat";
import { LegendItemType } from "../../../utils/uplot/types";
import LegendItem from "./LegendItem/LegendItem";
import Accordion from "../../Main/Accordion/Accordion";
import "./style.scss";
interface LegendProps {
@ -17,26 +18,34 @@ const Legend: FC<LegendProps> = ({ labels, query, onChange }) => {
return <>
<div className="vm-legend">
{groups.map((group) => <div
className="vm-legend-group"
key={group}
>
<div className="vm-legend-group-title">
{showQueryNum && (
<span className="vm-legend-group-title__count">Query {group}: </span>
)}
<span className="vm-legend-group-title__query">{query[group - 1]}</span>
{groups.map((group) => (
<div
className="vm-legend-group"
key={group}
>
<Accordion
defaultExpanded={true}
title={(
<div className="vm-legend-group-title">
{showQueryNum && (
<span className="vm-legend-group-title__count">Query {group}: </span>
)}
<span className="vm-legend-group-title__query">{query[group - 1]}</span>
</div>
)}
>
<div>
{labels.filter(l => l.group === group).map((legendItem: LegendItemType) =>
<LegendItem
key={legendItem.label}
legend={legendItem}
onChange={onChange}
/>
)}
</div>
</Accordion>
</div>
<div>
{labels.filter(l => l.group === group).map((legendItem: LegendItemType) =>
<LegendItem
key={legendItem.label}
legend={legendItem}
onChange={onChange}
/>
)}
</div>
</div>)}
))}
</div>
</>;
};

View file

@ -4,7 +4,6 @@
position: relative;
display: flex;
flex-wrap: wrap;
margin-top: $padding-medium;
cursor: default;
&-group {

View file

@ -7,7 +7,7 @@ import Modal from "../../Main/Modal/Modal";
import "./style.scss";
import Tooltip from "../../Main/Tooltip/Tooltip";
import LimitsConfigurator from "./LimitsConfigurator/LimitsConfigurator";
import { SeriesLimits } from "../../../types";
import { Theme } from "../../../types";
import { useCustomPanelDispatch, useCustomPanelState } from "../../../state/customPanel/CustomPanelStateContext";
import { getAppModeEnable } from "../../../utils/app-mode";
import classNames from "classnames";
@ -22,7 +22,7 @@ const GlobalSettings: FC = () => {
const { isMobile } = useDeviceDetect();
const appModeEnable = getAppModeEnable();
const { serverUrl: stateServerUrl } = useAppState();
const { serverUrl: stateServerUrl, theme } = useAppState();
const { timezone: stateTimezone } = useTimeState();
const { seriesLimits } = useCustomPanelState();
@ -31,20 +31,40 @@ const GlobalSettings: FC = () => {
const customPanelDispatch = useCustomPanelDispatch();
const [serverUrl, setServerUrl] = useState(stateServerUrl);
const [limits, setLimits] = useState<SeriesLimits>(seriesLimits);
const [limits, setLimits] = useState(seriesLimits);
const [timezone, setTimezone] = useState(stateTimezone);
const setDefaultsValues = () => {
setServerUrl(stateServerUrl);
setLimits(seriesLimits);
setTimezone(stateTimezone);
};
const [open, setOpen] = useState(false);
const handleOpen = () => setOpen(true);
const handleClose = () => setOpen(false);
const handleClose = () => {
setOpen(false);
setDefaultsValues();
};
const handleCloseForce = () => {
setOpen(false);
setDefaultsValues();
};
const handleChangeTheme = (value: Theme) => {
dispatch({ type: "SET_THEME", payload: value });
};
const handlerApply = () => {
dispatch({ type: "SET_SERVER", payload: serverUrl });
timeDispatch({ type: "SET_TIMEZONE", payload: timezone });
customPanelDispatch({ type: "SET_SERIES_LIMITS", payload: limits });
setOpen(false);
};
useEffect(() => {
// the tenant selector can change the serverUrl
if (stateServerUrl === serverUrl) return;
setServerUrl(stateServerUrl);
}, [stateServerUrl]);
@ -88,10 +108,10 @@ const GlobalSettings: FC = () => {
{!appModeEnable && (
<div className="vm-server-configurator__input">
<ServerConfigurator
stateServerUrl={stateServerUrl}
serverUrl={serverUrl}
onChange={setServerUrl}
onEnter={handlerApply}
onBlur={handlerApply}
/>
</div>
)}
@ -110,9 +130,28 @@ const GlobalSettings: FC = () => {
</div>
{!appModeEnable && (
<div className="vm-server-configurator__input">
<ThemeControl/>
<ThemeControl
theme={theme}
onChange={handleChangeTheme}
/>
</div>
)}
<div className="vm-server-configurator-footer">
<Button
color="error"
variant="outlined"
onClick={handleCloseForce}
>
Cancel
</Button>
<Button
color="primary"
variant="contained"
onClick={handlerApply}
>
Apply
</Button>
</div>
</div>
</Modal>
)}

View file

@ -51,7 +51,7 @@ const LimitsConfigurator: FC<ServerConfiguratorProps> = ({ limits, onChange , on
<div className="vm-limits-configurator">
<div className="vm-server-configurator__title">
Series limits by tabs
<Tooltip title="To disable limits set to 0">
<Tooltip title="Set to 0 to disable the limit">
<Button
variant="text"
color="primary"
@ -67,7 +67,7 @@ const LimitsConfigurator: FC<ServerConfiguratorProps> = ({ limits, onChange , on
startIcon={<RestartIcon/>}
onClick={handleReset}
>
Reset
Reset limits
</Button>
</div>
</div>

View file

@ -1,16 +1,21 @@
import React, { FC, useState } from "preact/compat";
import React, { FC, useEffect, useState } from "preact/compat";
import { ErrorTypes } from "../../../../types";
import TextField from "../../../Main/TextField/TextField";
import { isValidHttpUrl } from "../../../../utils/url";
export interface ServerConfiguratorProps {
serverUrl: string
stateServerUrl: string
onChange: (url: string) => void
onEnter: () => void
onBlur: () => void
}
const ServerConfigurator: FC<ServerConfiguratorProps> = ({ serverUrl, onChange , onEnter, onBlur }) => {
const ServerConfigurator: FC<ServerConfiguratorProps> = ({
serverUrl,
stateServerUrl,
onChange ,
onEnter
}) => {
const [error, setError] = useState("");
@ -18,10 +23,13 @@ const ServerConfigurator: FC<ServerConfiguratorProps> = ({ serverUrl, onChange ,
const value = val || "";
onChange(value);
setError("");
if (!value) setError(ErrorTypes.emptyServer);
if (!isValidHttpUrl(value)) setError(ErrorTypes.validServer);
};
useEffect(() => {
if (!stateServerUrl) setError(ErrorTypes.emptyServer);
if (!isValidHttpUrl(stateServerUrl)) setError(ErrorTypes.validServer);
}, [stateServerUrl]);
return (
<TextField
autofocus
@ -30,7 +38,6 @@ const ServerConfigurator: FC<ServerConfiguratorProps> = ({ serverUrl, onChange ,
error={error}
onChange={onChangeServer}
onEnter={onEnter}
onBlur={onBlur}
inputmode="url"
/>
);

View file

@ -46,7 +46,7 @@
}
&-list {
max-height: 200px;
max-height: 300px;
background-color: $color-background-block;
border-radius: $border-radius-medium;
overflow: auto;

View file

@ -32,4 +32,17 @@
font-weight: bold;
margin-bottom: $padding-global;
}
&-footer {
display: flex;
align-items: center;
justify-content: flex-end;
gap: $padding-small;
width: 100%;
}
&_mobile &-footer {
display: grid;
grid-template-columns: 1fr 1fr;
}
}

View file

@ -1,19 +1,22 @@
import React from "react";
import "./style.scss";
import { useAppDispatch, useAppState } from "../../../state/common/StateContext";
import { Theme } from "../../../types";
import Toggle from "../../Main/Toggle/Toggle";
import useDeviceDetect from "../../../hooks/useDeviceDetect";
import classNames from "classnames";
import { FC } from "preact/compat";
interface ThemeControlProps {
theme: Theme;
onChange: (val: Theme) => void
}
const options = Object.values(Theme).map(value => ({ title: value, value }));
const ThemeControl = () => {
const ThemeControl: FC<ThemeControlProps> = ({ theme, onChange }) => {
const { isMobile } = useDeviceDetect();
const { theme } = useAppState();
const dispatch = useAppDispatch();
const handleClickItem = (value: string) => {
dispatch({ type: "SET_THEME", payload: value as Theme });
onChange(value as Theme);
};
return (

View file

@ -0,0 +1,34 @@
import React, { FC } from "preact/compat";
import { ReactNode } from "react";
import classNames from "classnames";
interface Hyperlink {
text?: string;
href: string;
children?: ReactNode;
colored?: boolean;
underlined?: boolean;
}
const Hyperlink: FC<Hyperlink> = ({
text,
href,
children,
colored = true,
underlined = false
}) => (
<a
href={href}
className={classNames({
"vm-link": true,
"vm-link_colored": colored,
"vm-link_underlined": underlined
})}
target="_blank"
rel="noreferrer"
>
{text || children}
</a>
);
export default Hyperlink;

View file

@ -0,0 +1,22 @@
import { useCallback, useState } from "preact/compat";
import { Dispatch, SetStateAction } from "react";
interface UseBooleanOutput {
value: boolean
setValue: Dispatch<SetStateAction<boolean>>
setTrue: () => void
setFalse: () => void
toggle: () => void
}
const useBoolean = (defaultValue?: boolean): UseBooleanOutput => {
const [value, setValue] = useState(!!defaultValue);
const setTrue = useCallback(() => setValue(true), []);
const setFalse = useCallback(() => setValue(false), []);
const toggle = useCallback(() => setValue(x => !x), []);
return { value, setValue, setTrue, setFalse, toggle };
};
export default useBoolean;

View file

@ -79,7 +79,7 @@ export const useFetchQuery = ({
setFetchQueue([...fetchQueue, controller]);
try {
const isDisplayChart = displayType === "chart";
const seriesLimit = showAllSeries ? Infinity : stateSeriesLimits[displayType];
const seriesLimit = showAllSeries ? Infinity : (+stateSeriesLimits[displayType] || Infinity);
const tempData: MetricBase[] = [];
const tempTraces: Trace[] = [];
let counter = 1;

View file

@ -1,18 +1,9 @@
import { TipIcon } from "../../../components/Main/Icons";
import React, { FC } from "preact/compat";
import { ReactNode } from "react";
import Hyperlink from "../../../components/Main/Hyperlink/Hyperlink";
import "./style.scss";
const Link: FC<{ href: string, children: ReactNode, target?: string }> = ({ href, children, target }) => (
<a
href={href}
className="vm-link vm-link_colored"
target={target}
>
{children}
</a>
);
const TipCard: FC<{ title?: string, children: ReactNode }> = ({ title, children }) => (
<div className="vm-cardinality-tip">
<div className="vm-cardinality-tip-header">
@ -25,50 +16,22 @@ const TipCard: FC<{ title?: string, children: ReactNode }> = ({ title, children
</div>
);
export const TipDocumentation: FC = () => (
<TipCard title="Cardinality explorer">
<h6>Helpful for analyzing VictoriaMetrics TSDB data</h6>
<ul>
<li>
<Link href="https://docs.victoriametrics.com/#cardinality-explorer">
Cardinality explorer documentation
</Link>
</li>
<li>
See the <Link href="https://victoriametrics.com/blog/cardinality-explorer/">
example of using</Link> the cardinality explorer
</li>
</ul>
</TipCard>
);
export const TipHighNumberOfSeries: FC = () => (
<TipCard title="Metrics with a high number of series">
<ul>
<li>
Identify and eliminate labels with frequently changed values to reduce their&nbsp;
<Link
href='https://docs.victoriametrics.com/FAQ.html#what-is-high-cardinality'
target={"_blank"}
>cardinality</Link>&nbsp;and&nbsp;
<Link
href='https://docs.victoriametrics.com/FAQ.html#what-is-high-churn-rate'
target={"_blank"}
>high churn rate</Link>
<Hyperlink href='https://docs.victoriametrics.com/FAQ.html#what-is-high-cardinality'>cardinality</Hyperlink>
&nbsp;and&nbsp;
<Hyperlink href='https://docs.victoriametrics.com/FAQ.html#what-is-high-churn-rate'>high churn rate</Hyperlink>
</li>
<li>
Find unused time series and&nbsp;
<Link
href='https://docs.victoriametrics.com/relabeling.html'
target={"_blank"}
>drop entire metrics</Link>
<Hyperlink href='https://docs.victoriametrics.com/relabeling.html'>drop entire metrics</Hyperlink>
</li>
<li>
Aggregate time series before they got ingested into the database via&nbsp;
<Link
href='https://docs.victoriametrics.com/stream-aggregation.html'
target={"_blank"}
>streaming aggregation</Link>
Aggregate time series before they got ingested into the database via&nbsp;
<Hyperlink href='https://docs.victoriametrics.com/stream-aggregation.html'>streaming aggregation</Hyperlink>
</li>
</ul>
</TipCard>
@ -79,12 +42,10 @@ export const TipHighNumberOfValues: FC = () => (
<ul>
<li>Decrease the number of unique label values to reduce cardinality</li>
<li>Drop the label entirely via&nbsp;
<Link
href='https://docs.victoriametrics.com/relabeling.html'
target={"_blank"}
>relabeling</Link></li>
<Hyperlink href='https://docs.victoriametrics.com/relabeling.html'>relabeling</Hyperlink></li>
<li>For volatile label values (such as URL path, user session, etc.)
consider printing them to the log file instead of adding to time series</li>
consider printing them to the log file instead of adding to time series
</li>
</ul>
</TipCard>
);

View file

@ -0,0 +1,27 @@
import React, { FC } from "preact/compat";
import Hyperlink from "../../../components/Main/Hyperlink/Hyperlink";
const last_over_time = <Hyperlink
text="last_over_time"
href="https://docs.victoriametrics.com/MetricsQL.html#last_over_time"
underlined
/>;
const instant_query = <Hyperlink
text="instant query"
href="https://docs.victoriametrics.com/keyConcepts.html#instant-query"
underlined
/>;
const InstantQueryTip: FC = () => (
<div>
<p>
This tab shows {instant_query} results for the last 5 minutes ending at the selected time range.
</p>
<p>
Please wrap the query into {last_over_time} if you need results over arbitrary lookbehind interval.
</p>
</div>
);
export default InstantQueryTip;

View file

@ -22,6 +22,8 @@ import TableView from "../../components/Views/TableView/TableView";
import Button from "../../components/Main/Button/Button";
import classNames from "classnames";
import useDeviceDetect from "../../hooks/useDeviceDetect";
import GraphTips from "../../components/Chart/GraphTips/GraphTips";
import InstantQueryTip from "./InstantQueryTip/InstantQueryTip";
const CustomPanel: FC = () => {
const { displayType, isTracingEnabled } = useCustomPanelState();
@ -120,6 +122,7 @@ const CustomPanel: FC = () => {
)}
{isLoading && <Spinner />}
{!hideError && error && <Alert variant="error">{error}</Alert>}
{!liveData?.length && (displayType !== "chart") && <Alert variant="info"><InstantQueryTip/></Alert>}
{warning && <Alert variant="warning">
<div
className={classNames({
@ -147,12 +150,15 @@ const CustomPanel: FC = () => {
>
<div className="vm-custom-panel-body-header">
<DisplayTypeSwitch/>
{displayType === "chart" && !isHistogram && (
<GraphSettings
yaxis={yaxis}
setYaxisLimits={setYaxisLimits}
toggleEnableLimits={toggleEnableLimits}
/>
{displayType === "chart" && (
<div className="vm-custom-panel-body-header__left">
<GraphTips/>
<GraphSettings
yaxis={yaxis}
setYaxisLimits={setYaxisLimits}
toggleEnableLimits={toggleEnableLimits}
/>
</div>
)}
{displayType === "table" && (
<TableSettings

View file

@ -39,6 +39,12 @@
padding: 0 $padding-medium;
border-bottom: $border-divider;
z-index: 1;
&__left {
display: flex;
align-items: center;
gap: $padding-small;
}
}
&_mobile &-header {

View file

@ -8,6 +8,10 @@
color: $color-primary;
}
&_underlined {
text-decoration: underline;
}
&_with-icon {
display: grid;
align-items: center;

View file

@ -36,6 +36,9 @@ created by v1.90.0 or newer versions. The solution is to upgrade to v1.90.0 or n
* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): hide messages longer than 3 lines in the trace. You can view the full message by clicking on the `show more` button. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3971).
* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): add the ability to manually input date and time when selecting a time range. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3968).
* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): updated usability and the search process in cardinality explorer. Made this process straightforward for user. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3986).
* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): add the ability to collapse/expand the legend. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/4045).
* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): add tips for working with the graph and legend. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/4045).
* FEATURE: [vmui](https://docs.victoriametrics.com/#vmui): add `apply` and `cancel` buttons to settings popup. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4013).
* FEATURE: [vmctl](https://docs.victoriametrics.com/vmctl.html): automatically disable progress bar when TTY isn't available. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3823).
* FEATURE: [vmauth](https://docs.victoriametrics.com/vmauth.html): add `-configCheckInterval` command-line flag, which can be used for automatic re-reading the `-auth.config` file. See [this feature request](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3990).
@ -46,6 +49,8 @@ created by v1.90.0 or newer versions. The solution is to upgrade to v1.90.0 or n
* BUGFIX: allow using dashes and dots in environment variables names referred in config files via `%{ENV-VAR.SYNTAX}`. See [these docs](https://docs.victoriametrics.com/#environment-variables) and [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3999).
* BUGFIX: return back query performance scalability on hosts with big number of CPU cores. The scalability has been reduced in [v1.86.0](https://docs.victoriametrics.com/CHANGELOG.html#v1860). See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3966).
* BUGFIX: [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html): properly convert [VictoriaMetrics historgram buckets](https://valyala.medium.com/improving-histogram-usability-for-prometheus-and-grafana-bc7e5df0e350) to Prometheus histogram buckets when VictoriaMetrics histogram contain zero buckets. Previously these buckets were ignored, and this could lead to missing Prometheus histogram buckets after the conversion. Thanks to @zklapow for [the fix](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/4021).
* BUGFIX: [vmagent](https://docs.victoriametrics.com/vmgent.html): fix CPU and memory usage spikes when files pointed by [file_sd_config](https://docs.victoriametrics.com/sd_configs.html#file_sd_configs) cannot be re-read. See [this_issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3989).
* BUGFIX: prevent unexpected merges on start-up when `-storage.minFreeDiskSpaceBytes` is set. See [the issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4023).
* BUGFIX: properly support comma-separated filters inside [retention filters](https://docs.victoriametrics.com/#retention-filters). See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3915).
* BUGFIX: verify response code when fetching configuration files via HTTP. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4034).
* BUGFIX: [vmalert](https://docs.victoriametrics.com/vmalert.html): replace empty labels with "" instead of "<no value>" during templating, as Prometheus does. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4012).

View file

@ -94,6 +94,7 @@ The following meta labels are available on discovered targets during [relabeling
* `__meta_azure_subscription_id`: the subscription ID
* `__meta_azure_tenant_id`: the tenant ID
The list of discovered Azure targets is refreshed at the interval, which can be configured via `-promscrape.azureSDCheckInterval` command-line flag.
## consul_sd_configs
@ -183,6 +184,7 @@ The following meta labels are available on discovered targets during [relabeling
* `__meta_consul_tagpresent_<tagname>`: "true" for every <tagname> tag of the target
* `__meta_consul_tags`: the list of tags of the target joined by the `tag_separator`
The list of discovered Consul targets is refreshed at the interval, which can be configured via `-promscrape.consulSDCheckInterval` command-line flag.
## digitalocean_sd_configs
@ -224,6 +226,7 @@ The following meta labels are available on discovered targets during [relabeling
* `__meta_digitalocean_tags`: the comma-separated list of tags of the droplet
* `__meta_digitalocean_vpc`: the id of the droplet's VPC
The list of discovered DigitalOcean targets is refreshed at the interval, which can be configured via `-promscrape.digitaloceanSDCheckInterval` command-line flag.
## dns_sd_configs
@ -260,6 +263,7 @@ The following meta labels are available on discovered targets during [relabeling
* `__meta_dns_srv_record_port`: the port field of the SRV record
* `__meta_dns_mx_record_target`: the target field of the MX record.
The list of discovered DNS targets is refreshed at the interval, which can be configured via `-promscrape.dnsSDCheckInterval` command-line flag.
## docker_sd_configs
@ -315,6 +319,7 @@ The following meta labels are available on discovered targets during [relabeling
* `__meta_docker_port_public`: the external port if a port-mapping exists
* `__meta_docker_port_public_ip`: the public IP if a port-mapping exists
The list of discovered Docker targets is refreshed at the interval, which can be configured via `-promscrape.dockerSDCheckInterval` command-line flag.
## dockerswarm_sd_configs
@ -444,6 +449,7 @@ One of the following roles can be configured to discover targets:
* `__meta_dockerswarm_node_role`: the role of the node
* `__meta_dockerswarm_node_status`: the status of the node
The list of discovered Docker Swarm targets is refreshed at the interval, which can be configured via `-promscrape.dockerswarmSDCheckInterval` command-line flag.
## ec2_sd_configs
@ -526,6 +532,7 @@ The following meta labels are available on discovered targets during [relabeling
* `__meta_ec2_tag_<tagkey>`: each tag value of the instance
* `__meta_ec2_vpc_id`: the ID of the VPC in which the instance is running, if available
The list of discovered EC2 targets is refreshed at the interval, which can be configured via `-promscrape.ec2SDCheckInterval` command-line flag.
## eureka_sd_configs
@ -570,11 +577,11 @@ The following meta labels are available on discovered targets during [relabeling
* `__meta_eureka_app_instance_datacenterinfo_name`: the datacenter name of the app instance
* `__meta_eureka_app_instance_datacenterinfo_metadata_<metadataname>`: the datacenter metadata
The list of discovered Eureka targets is refreshed at the interval, which can be configured via `-promscrape.eurekaSDCheckInterval` command-line flag.
## file_sd_configs
File-based service discovery reads a set of files with lists of targets to scrape.
Scrape targets are automatically updated when the underlying files are changed with the interval
Configuration example:
@ -625,6 +632,7 @@ The following meta labels are available on discovered targets during [relabeling
See the [list of integrations](https://prometheus.io/docs/operating/integrations/#file-service-discovery) with `file_sd_configs`.
The list of discovered file-based targets is refreshed at the interval, which can be configured via `-promscrape.fileSDCheckInterval` command-line flag.
## gce_sd_configs
@ -685,6 +693,7 @@ The following meta labels are available on discovered targets during [relabeling
* `__meta_gce_tags`: list of instance tags separated by tag_separator
* `__meta_gce_zone`: the GCE zone URL in which the instance is running
The list of discovered GCE targets is refreshed at the interval, which can be configured via `-promscrape.gceSDCheckInterval` command-line flag.
## http_sd_configs
@ -728,6 +737,7 @@ The following meta labels are available on discovered targets during [relabeling
* `__meta_url`: the URL from which the target was extracted
The list of discovered HTTP-based targets is refreshed at the interval, which can be configured via `-promscrape.httpSDCheckInterval` command-line flag.
## kubernetes_sd_configs
@ -945,6 +955,8 @@ One of the following `role` types can be configured to discover targets:
* `__meta_kubernetes_ingress_scheme`: Protocol scheme of ingress, https if TLS config is set. Defaults to http.
* `__meta_kubernetes_ingress_path`: Path from ingress spec. Defaults to `/`.
The list of discovered Kuberntes targets is refreshed at the interval, which can be configured via `-promscrape.kubernetesSDCheckInterval` command-line flag.
## kuma_sd_configs
Kuma service discovery config allows to fetch targets from the specified control plane `server` of [Kuma Service Mesh](https://kuma.io).
@ -979,6 +991,8 @@ The following meta labels are available on discovered targets during [relabeling
* `__meta_kuma_service`: the name of the service associated with the proxy
* `__meta_kuma_label_<label_name>`: each label of target given from Kuma Control Plane
The list of discovered Kuma targets is refreshed at the interval, which can be configured via `-promscrape.kumaSDCheckInterval` command-line flag.
## nomad_sd_configs
Nomad SD configuration allows retrieving scrape targets from [HashiCorp Nomad Services](https://www.hashicorp.com/blog/nomad-service-discovery).
@ -1037,6 +1051,8 @@ The following meta labels are available on discovered targets during [relabeling
* `__meta_nomad_tagpresent_<tagname>`: "true" for every <tagname> tag of the target
* `__meta_nomad_tags`: the list of tags of the target joined by the `tag_separator`
The list of discovered Nomad targets is refreshed at the interval, which can be configured via `-promscrape.nomadSDCheckInterval` command-line flag.
## openstack_sd_configs
OpenStack SD configuration allows retrieving scrape targets from [OpenStack Nova](https://docs.openstack.org/nova/latest/) instances.
@ -1150,6 +1166,7 @@ One of the following `role` types can be configured to discover targets:
* `__meta_openstack_tag_<tagkey>`: each tag value of the instance.
* `__meta_openstack_user_id`: the user account owning the tenant.
The list of discovered OpenStack targets is refreshed at the interval, which can be configured via `-promscrape.openstackSDCheckInterval` command-line flag.
## static_configs
@ -1254,6 +1271,7 @@ The following meta labels are available on discovered targets during [relabeling
* `__meta_yandexcloud_instance_private_dns_<record number>`: if configured DNS records for private IP
* `__meta_yandexcloud_instance_public_dns_<record number>`: if configured DNS records for public IP
The list of discovered Yandex Cloud targets is refreshed at the interval, which can be configured via `-promscrape.yandexcloudSDCheckInterval` command-line flag.
## scrape_configs

10
go.mod
View file

@ -15,8 +15,8 @@ require (
github.com/VictoriaMetrics/metricsql v0.56.1
github.com/aws/aws-sdk-go-v2 v1.17.7
github.com/aws/aws-sdk-go-v2/config v1.18.19
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.59
github.com/aws/aws-sdk-go-v2/service/s3 v1.31.0
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.60
github.com/aws/aws-sdk-go-v2/service/s3 v1.31.1
github.com/cespare/xxhash/v2 v2.2.0
github.com/cheggaaa/pb/v3 v3.1.2
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
@ -54,7 +54,7 @@ require (
github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 // indirect
github.com/VividCortex/ewma v1.2.0 // indirect
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect
github.com/aws/aws-sdk-go v1.44.230 // indirect
github.com/aws/aws-sdk-go v1.44.234 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.13.18 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.1 // indirect
@ -76,7 +76,7 @@ require (
github.com/felixge/httpsnoop v1.0.3 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/go-logr/logr v1.2.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.3 // indirect
@ -113,7 +113,7 @@ require (
golang.org/x/time v0.3.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5 // indirect
google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633 // indirect
google.golang.org/grpc v1.54.0 // indirect
google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect

20
go.sum
View file

@ -86,8 +86,8 @@ github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu
github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA=
github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
github.com/aws/aws-sdk-go v1.44.230 h1:dcn7TjLyx/31I+0XytMGYRxDc756BRUzsSYVcSyKZlk=
github.com/aws/aws-sdk-go v1.44.230/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/aws/aws-sdk-go v1.44.234 h1:8YbQ5AhpgV/cC7jYX8qS34Am/vcn2ZoIFJ1qIgwOL+0=
github.com/aws/aws-sdk-go v1.44.234/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/aws/aws-sdk-go-v2 v1.17.7 h1:CLSjnhJSTSogvqUGhIC6LqFKATMRexcxLZ0i/Nzk9Eg=
github.com/aws/aws-sdk-go-v2 v1.17.7/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 h1:dK82zF6kkPeCo8J1e+tGx4JdvDIQzj7ygIoLg8WMuGs=
@ -98,8 +98,8 @@ github.com/aws/aws-sdk-go-v2/credentials v1.13.18 h1:EQMdtHwz0ILTW1hoP+EwuWhwCG1
github.com/aws/aws-sdk-go-v2/credentials v1.13.18/go.mod h1:vnwlwjIe+3XJPBYKu1et30ZPABG3VaXJYr8ryohpIyM=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.1 h1:gt57MN3liKiyGopcqgNzJb2+d9MJaKT/q1OksHNXVE4=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.1/go.mod h1:lfUx8puBRdM5lVVMQlwt2v+ofiG/X6Ms+dy0UkG/kXw=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.59 h1:E3Y+OfzOK1+rmRo/K2G0ml8Vs+Xqk0kOnf4nS0kUtBc=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.59/go.mod h1:1M4PLSBUVfBI0aP+C9XI7SM6kZPCGYyI6izWz0TGprE=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.60 h1:BRLcU36boYxw6BPOEvwJbDPuCtP7FqMhXMFk2NM6poM=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.60/go.mod h1:HLWzCoNyzaPkOOs9yZ3muJ91lSk8O9DJbJw5aKAWWHY=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.31 h1:sJLYcS+eZn5EeNINGHSCRAwUJMFVqklwkH36Vbyai7M=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.31/go.mod h1:QT0BqUvX1Bh2ABdTGnjqEjvjzrCfIniM9Sc8zn9Yndo=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.25 h1:1mnRASEKnkqsntcxHaysxwgVoUUp5dkiB+l3llKnqyg=
@ -116,8 +116,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.25 h1:5LHn8JQ0q
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.25/go.mod h1:/95IA+0lMnzW6XzqYJRpjjsAbKEORVeO0anQqjd2CNU=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.0 h1:e2ooMhpYGhDnBfSvIyusvAwX7KexuZaHbQY2Dyei7VU=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.0/go.mod h1:bh2E0CXKZsQN+faiKVqC40vfNMAWheoULBCnEgO9K+8=
github.com/aws/aws-sdk-go-v2/service/s3 v1.31.0 h1:B1G2pSPvbAtQjilPq+Y7jLIzCOwKzuVEl+aBBaNG0AQ=
github.com/aws/aws-sdk-go-v2/service/s3 v1.31.0/go.mod h1:ncltU6n4Nof5uJttDtcNQ537uNuwYqsZZQcpkd2/GUQ=
github.com/aws/aws-sdk-go-v2/service/s3 v1.31.1 h1:PJH4I+qYjPXclKRbVCW47iYUvtXEh1u6YmDhn5J8VQE=
github.com/aws/aws-sdk-go-v2/service/s3 v1.31.1/go.mod h1:ncltU6n4Nof5uJttDtcNQ537uNuwYqsZZQcpkd2/GUQ=
github.com/aws/aws-sdk-go-v2/service/sso v1.12.6 h1:5V7DWLBd7wTELVz5bPpwzYy/sikk0gsgZfj40X+l5OI=
github.com/aws/aws-sdk-go-v2/service/sso v1.12.6/go.mod h1:Y1VOmit/Fn6Tz1uFAeCO6Q7M2fmfXSCLeL5INVYsLuY=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.6 h1:B8cauxOH1W1v7rd8RdI/MWnoR4Ze0wIHWrb90qczxj4=
@ -184,8 +184,8 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
@ -731,8 +731,8 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5 h1:Kd6tRRHXw8z4TlPlWi+NaK10gsePL6GdZBQChptOLGA=
google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633 h1:0BOZf6qNozI3pkN3fJLwNubheHJYHhMh91GRFOWWK08=
google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=

View file

@ -711,21 +711,11 @@ func (cfg *Config) getEurekaSDScrapeWork(prev []*ScrapeWork) []*ScrapeWork {
// getFileSDScrapeWork returns `file_sd_configs` ScrapeWork from cfg.
func (cfg *Config) getFileSDScrapeWork(prev []*ScrapeWork) []*ScrapeWork {
// Create a map for the previous scrape work.
swsMapPrev := make(map[string][]*ScrapeWork)
for _, sw := range prev {
filepath := sw.Labels.Get("__vm_filepath")
if len(filepath) == 0 {
logger.Panicf("BUG: missing `__vm_filepath` label")
} else {
swsMapPrev[filepath] = append(swsMapPrev[filepath], sw)
}
}
dst := make([]*ScrapeWork, 0, len(prev))
for _, sc := range cfg.ScrapeConfigs {
for j := range sc.FileSDConfigs {
sdc := &sc.FileSDConfigs[j]
dst = sdc.appendScrapeWork(dst, swsMapPrev, cfg.baseDir, sc.swc)
dst = sdc.appendScrapeWork(dst, cfg.baseDir, sc.swc)
}
}
return dst
@ -1122,7 +1112,7 @@ func appendScrapeWorkForTargetLabels(dst []*ScrapeWork, swc *scrapeWorkConfig, t
return dst
}
func (sdc *FileSDConfig) appendScrapeWork(dst []*ScrapeWork, swsMapPrev map[string][]*ScrapeWork, baseDir string, swc *scrapeWorkConfig) []*ScrapeWork {
func (sdc *FileSDConfig) appendScrapeWork(dst []*ScrapeWork, baseDir string, swc *scrapeWorkConfig) []*ScrapeWork {
metaLabels := promutils.GetLabels()
defer promutils.PutLabels(metaLabels)
for _, file := range sdc.Files {
@ -1133,7 +1123,7 @@ func (sdc *FileSDConfig) appendScrapeWork(dst []*ScrapeWork, swsMapPrev map[stri
paths, err = filepath.Glob(pathPattern)
if err != nil {
// Do not return this error, since other files may contain valid scrape configs.
logger.Errorf("invalid pattern %q in `files` section: %s; skipping it", file, err)
logger.Errorf("invalid pattern %q in `file_sd_config->files` section of job_name=%q: %s; skipping it", file, swc.jobName, err)
continue
}
}
@ -1141,13 +1131,7 @@ func (sdc *FileSDConfig) appendScrapeWork(dst []*ScrapeWork, swsMapPrev map[stri
stcs, err := loadStaticConfigs(path)
if err != nil {
// Do not return this error, since other paths may contain valid scrape configs.
if sws := swsMapPrev[path]; sws != nil {
// Re-use the previous valid scrape work for this path.
logger.Errorf("keeping the previously loaded `static_configs` from %q because of error when re-loading the file: %s", path, err)
dst = append(dst, sws...)
} else {
logger.Errorf("skipping loading `static_configs` from %q because of error: %s", path, err)
}
logger.Errorf("cannot load file %q for job_name=%q at `file_sd_configs`: %s; skipping this file", path, swc.jobName, err)
continue
}
pathShort := path
@ -1159,7 +1143,6 @@ func (sdc *FileSDConfig) appendScrapeWork(dst []*ScrapeWork, swsMapPrev map[stri
}
metaLabels.Reset()
metaLabels.Add("__meta_filepath", pathShort)
metaLabels.Add("__vm_filepath", path) // This label is needed for internal promscrape logic
for i := range stcs {
dst = stcs[i].appendScrapeWork(dst, swc, metaLabels)
}

View file

@ -739,16 +739,6 @@ func TestGetFileSDScrapeWorkSuccess(t *testing.T) {
}
resetNonEssentialFields(sws)
// Remove `__vm_filepath` label, since its value depends on the current working dir.
for _, sw := range sws {
labels := sw.Labels.GetLabels()
for j := range labels {
label := &labels[j]
if label.Name == "__vm_filepath" {
label.Value = ""
}
}
}
if !reflect.DeepEqual(sws, expectedSws) {
t.Fatalf("unexpected scrapeWork; got\n%+v\nwant\n%+v", sws, expectedSws)
}
@ -772,10 +762,9 @@ scrape_configs:
ScrapeTimeout: defaultScrapeTimeout,
HonorTimestamps: true,
Labels: promutils.NewLabelsFromMap(map[string]string{
"__vm_filepath": "",
"instance": "host1:80",
"job": "foo",
"qwe": "rty",
"instance": "host1:80",
"job": "foo",
"qwe": "rty",
}),
AuthConfig: &promauth.Config{},
ProxyAuthConfig: &promauth.Config{},
@ -787,10 +776,9 @@ scrape_configs:
ScrapeTimeout: defaultScrapeTimeout,
HonorTimestamps: true,
Labels: promutils.NewLabelsFromMap(map[string]string{
"__vm_filepath": "",
"instance": "host2:80",
"job": "foo",
"qwe": "rty",
"instance": "host2:80",
"job": "foo",
"qwe": "rty",
}),
AuthConfig: &promauth.Config{},
ProxyAuthConfig: &promauth.Config{},
@ -802,10 +790,9 @@ scrape_configs:
ScrapeTimeout: defaultScrapeTimeout,
HonorTimestamps: true,
Labels: promutils.NewLabelsFromMap(map[string]string{
"__vm_filepath": "",
"instance": "localhost:9090",
"job": "foo",
"yml": "test",
"instance": "localhost:9090",
"job": "foo",
"yml": "test",
}),
AuthConfig: &promauth.Config{},
ProxyAuthConfig: &promauth.Config{},

View file

@ -255,8 +255,7 @@ func (x *Labels) RemoveLabelsWithDoubleUnderscorePrefix() {
dst := x.Labels[:0]
for _, label := range src {
name := label.Name
// A hack: do not delete __vm_filepath label, since it is used by internal logic for FileSDConfig.
if strings.HasPrefix(name, "__") && name != "__vm_filepath" {
if strings.HasPrefix(name, "__") {
continue
}
dst = append(dst, label)

View file

@ -172,6 +172,6 @@ func TestLabelsRemoveLabelsWithDoubleUnderscorePrefix(t *testing.T) {
}
f(`{}`, `{}`)
f(`{foo="bar"}`, `{foo="bar"}`)
f(`{__meta_foo="bar",a="b",__name__="foo",__vm_filepath="aa"}`, `{a="b",__vm_filepath="aa"}`)
f(`{__meta_foo="bar",a="b",__name__="foo",__vm_filepath="aa"}`, `{a="b"}`)
f(`{__meta_foo="bdffr",foo="bar",__meta_xxx="basd"}`, `{foo="bar"}`)
}

View file

@ -60,9 +60,6 @@ func TestAppendPartsToMergeManyParts(t *testing.T) {
r := rand.New(rand.NewSource(1))
for i := 0; i < 1024; i++ {
n := uint64(uint32(r.NormFloat64() * 1e9))
if n < 0 {
n = -n
}
n++
maxOutSize += n
sizes = append(sizes, n)

View file

@ -252,6 +252,10 @@ func OpenStorage(path string, retentionMsecs int64, maxHourlySeries, maxDailySer
s.setDeletedMetricIDs(dmisCurr)
s.updateDeletedMetricIDs(dmisPrev)
// check for free disk space before opening the table
// to prevent unexpected part merges. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4023
s.startFreeDiskSpaceWatcher()
// Load data
tablePath := filepath.Join(path, dataDirname)
tb, err := openTable(tablePath, s)
@ -264,7 +268,6 @@ func OpenStorage(path string, retentionMsecs int64, maxHourlySeries, maxDailySer
s.startCurrHourMetricIDsUpdater()
s.startNextDayMetricIDsUpdater()
s.startRetentionWatcher()
s.startFreeDiskSpaceWatcher()
return s, nil
}
@ -1848,11 +1851,13 @@ type pendingMetricRows struct {
}
func (pmrs *pendingMetricRows) reset() {
for _, pmr := range pmrs.pmrs {
mrs := pmrs.pmrs
for i := range mrs {
pmr := &mrs[i]
pmr.MetricName = nil
pmr.mr = nil
}
pmrs.pmrs = pmrs.pmrs[:0]
pmrs.pmrs = mrs[:0]
pmrs.metricNamesBuf = pmrs.metricNamesBuf[:0]
pmrs.lastMetricNameRaw = nil
pmrs.lastMetricName = nil
@ -1872,10 +1877,16 @@ func (pmrs *pendingMetricRows) addRow(mr *MetricRow) error {
pmrs.lastMetricName = pmrs.metricNamesBuf[metricNamesBufLen:]
pmrs.lastMetricNameRaw = mr.MetricNameRaw
}
pmrs.pmrs = append(pmrs.pmrs, pendingMetricRow{
MetricName: pmrs.lastMetricName,
mr: mr,
})
mrs := pmrs.pmrs
if cap(mrs) > len(mrs) {
mrs = mrs[:len(mrs)+1]
} else {
mrs = append(mrs, pendingMetricRow{})
}
pmrs.pmrs = mrs
pmr := &mrs[len(mrs)-1]
pmr.MetricName = pmrs.lastMetricName
pmr.mr = mr
return nil
}

View file

@ -1,3 +1,7 @@
# v1.11.60 (2023-03-31)
* **Dependency Update**: Updated to the latest SDK module versions
# v1.11.59 (2023-03-21)
* **Dependency Update**: Updated to the latest SDK module versions

View file

@ -3,4 +3,4 @@
package manager
// goModuleVersion is the tagged release for this module
const goModuleVersion = "1.11.59"
const goModuleVersion = "1.11.60"

View file

@ -1,3 +1,7 @@
# v1.31.1 (2023-03-31)
* **Documentation**: Documentation updates for Amazon S3
# v1.31.0 (2023-03-21)
* **Feature**: port v1 sdk 100-continue http header customization for s3 PutObject/UploadPart request and enable user config

View file

@ -70,13 +70,13 @@ type AbortMultipartUploadInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -26,10 +26,16 @@ import (
// minutes to complete. After Amazon S3 begins processing the request, it sends an
// HTTP response header that specifies a 200 OK response. While processing is in
// progress, Amazon S3 periodically sends white space characters to keep the
// connection from timing out. Because a request could fail after the initial 200
// OK response has been sent, it is important that you check the response body to
// determine whether the request succeeded. Note that if CompleteMultipartUpload
// fails, applications should be prepared to retry the failed requests. For more
// connection from timing out. A request could fail after the initial 200 OK
// response has been sent. This means that a 200 OK response can contain either a
// success or an error. If you call the S3 API directly, make sure to design your
// application to parse the contents of the response and handle it appropriately.
// If you use Amazon Web Services SDKs, SDKs handle this condition. The SDKs detect
// the embedded error and apply error handling per your configuration settings
// (including automatically retrying the request as appropriate). If the condition
// persists, the SDKs throws an exception (or, for the SDKs that don't use
// exceptions, they return the error). Note that if CompleteMultipartUpload fails,
// applications should be prepared to retry the failed requests. For more
// information, see Amazon S3 Error Best Practices
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html). You
// cannot use Content-Type: application/x-www-form-urlencoded with Complete
@ -123,13 +129,13 @@ type CompleteMultipartUploadInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//
@ -229,13 +235,13 @@ type CompleteMultipartUploadOutput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
Bucket *string
@ -302,14 +308,12 @@ type CompleteMultipartUploadOutput struct {
RequestCharged types.RequestCharged
// If present, specifies the ID of the Amazon Web Services Key Management Service
// (Amazon Web Services KMS) symmetric customer managed key that was used for the
// object.
// (Amazon Web Services KMS) symmetric encryption customer managed key that was
// used for the object.
SSEKMSKeyId *string
// If you specified server-side encryption either with an Amazon S3-managed
// encryption key or an Amazon Web Services KMS key in your initiate multipart
// upload request, the response includes this header. It confirms the encryption
// algorithm that Amazon S3 used to encrypt the object.
// The server-side encryption algorithm used when storing this object in Amazon S3
// (for example, AES256, aws:kms).
ServerSideEncryption types.ServerSideEncryption
// Version ID of the newly created object, in case the bucket has versioning turned

View file

@ -30,10 +30,15 @@ import (
// the files. If the error occurs before the copy action starts, you receive a
// standard Amazon S3 error. If the error occurs during the copy operation, the
// error response is embedded in the 200 OK response. This means that a 200 OK
// response can contain either a success or an error. Design your application to
// parse the contents of the response and handle it appropriately. If the copy is
// successful, you receive a response with information about the copied object. If
// the request is an HTTP 1.1 request, the response is chunk encoded. If it were
// response can contain either a success or an error. If you call the S3 API
// directly, make sure to design your application to parse the contents of the
// response and handle it appropriately. If you use Amazon Web Services SDKs, SDKs
// handle this condition. The SDKs detect the embedded error and apply error
// handling per your configuration settings (including automatically retrying the
// request as appropriate). If the condition persists, the SDKs throws an exception
// (or, for the SDKs that don't use exceptions, they return the error). If the copy
// is successful, you receive a response with information about the copied object.
// If the request is an HTTP 1.1 request, the response is chunk encoded. If it were
// not, it would not contain the content-length, and you would need to read the
// entire body. The copy request charge is based on the storage class and Region
// that you specify for the destination object. For pricing information, see Amazon
@ -57,50 +62,66 @@ import (
// the Amazon S3 User Guide. For a complete list of Amazon S3-specific condition
// keys, see Actions, Resources, and Condition Keys for Amazon S3
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html).
// x-amz-copy-source-if Headers To only copy an object under certain conditions,
// such as whether the Etag matches or whether the object was modified before or
// after a specified date, use the following request parameters:
// x-amz-website-redirect-location is unique to each object and must be specified
// in the request headers to copy the value. x-amz-copy-source-if Headers To only
// copy an object under certain conditions, such as whether the Etag matches or
// whether the object was modified before or after a specified date, use the
// following request parameters:
//
// * x-amz-copy-source-if-match
//
// *
// x-amz-copy-source-if-match
// x-amz-copy-source-if-none-match
//
// * x-amz-copy-source-if-none-match
// * x-amz-copy-source-if-unmodified-since
//
// *
// x-amz-copy-source-if-unmodified-since
// x-amz-copy-source-if-modified-since
//
// * x-amz-copy-source-if-modified-since
// If both the x-amz-copy-source-if-match and
// x-amz-copy-source-if-unmodified-since headers are present in the request and
// evaluate as follows, Amazon S3 returns 200 OK and copies the data:
//
// If
// both the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since
// headers are present in the request and evaluate as follows, Amazon S3 returns
// 200 OK and copies the data:
// *
// x-amz-copy-source-if-match condition evaluates to true
//
// * x-amz-copy-source-if-match condition evaluates to
// *
// x-amz-copy-source-if-unmodified-since condition evaluates to false
//
// If both the
// x-amz-copy-source-if-none-match and x-amz-copy-source-if-modified-since headers
// are present in the request and evaluate as follows, Amazon S3 returns the 412
// Precondition Failed response code:
//
// * x-amz-copy-source-if-none-match condition
// evaluates to false
//
// * x-amz-copy-source-if-modified-since condition evaluates to
// true
//
// * x-amz-copy-source-if-unmodified-since condition evaluates to false
//
// If
// both the x-amz-copy-source-if-none-match and x-amz-copy-source-if-modified-since
// headers are present in the request and evaluate as follows, Amazon S3 returns
// the 412 Precondition Failed response code:
//
// * x-amz-copy-source-if-none-match
// condition evaluates to false
//
// * x-amz-copy-source-if-modified-since condition
// evaluates to true
//
// All headers with the x-amz- prefix, including
// x-amz-copy-source, must be signed. Server-side encryption When you perform a
// CopyObject operation, you can optionally use the appropriate encryption-related
// headers to encrypt the object using server-side encryption with Amazon Web
// Services managed encryption keys (SSE-S3 or SSE-KMS) or a customer-provided
// encryption key. With server-side encryption, Amazon S3 encrypts your data as it
// writes it to disks in its data centers and decrypts the data when you access it.
// For more information about server-side encryption, see Using Server-Side
// Encryption
// All headers with the x-amz- prefix, including x-amz-copy-source, must be
// signed. Server-side encryption Amazon S3 automatically encrypts all new objects
// that are copied to an S3 bucket. When copying an object, if you don't specify
// encryption information in your copy request, the encryption setting of the
// target object is set to the default encryption configuration of the destination
// bucket. By default, all buckets have a base level of encryption configuration
// that uses server-side encryption with Amazon S3 managed keys (SSE-S3). If the
// destination bucket has a default encryption configuration that uses server-side
// encryption with an Key Management Service (KMS) key (SSE-KMS), or a
// customer-provided encryption key (SSE-C), Amazon S3 uses the corresponding KMS
// key, or a customer-provided key to encrypt the target object copy. When you
// perform a CopyObject operation, if you want to use a different type of
// encryption setting for the target object, you can use other appropriate
// encryption-related headers to encrypt the target object with a KMS key, an
// Amazon S3 managed key, or a customer-provided key. With server-side encryption,
// Amazon S3 encrypts your data as it writes it to disks in its data centers and
// decrypts the data when you access it. If the encryption setting in your request
// is different from the default encryption configuration of the destination
// bucket, the encryption setting in your request takes precedence. If the source
// object for the copy is stored in Amazon S3 using SSE-C, you must provide the
// necessary encryption information in your request so that Amazon S3 can decrypt
// the object for copying. For more information about server-side encryption, see
// Using Server-Side Encryption
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html). If
// a target object uses SSE-KMS, you can enable an S3 Bucket Key for the object.
// For more information, see Amazon S3 Bucket Keys
@ -182,13 +203,13 @@ type CopyObjectInput struct {
// SDKs, you provide the access point ARN in place of the bucket name. For more
// information about access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//
@ -404,7 +425,9 @@ type CopyObjectInput struct {
// If the bucket is configured as a website, redirects requests for this object to
// another object in the same bucket or to an external URL. Amazon S3 stores the
// value of this header in the object metadata.
// value of this header in the object metadata. This value is unique to each object
// and is not copied when using the x-amz-metadata-directive header. Instead, you
// may opt to provide this header in combination with the directive.
WebsiteRedirectLocation *string
noSmithyDocumentSerde
@ -444,8 +467,8 @@ type CopyObjectOutput struct {
SSEKMSEncryptionContext *string
// If present, specifies the ID of the Amazon Web Services Key Management Service
// (Amazon Web Services KMS) symmetric customer managed key that was used for the
// object.
// (Amazon Web Services KMS) symmetric encryption customer managed key that was
// used for the object.
SSEKMSKeyId *string
// The server-side encryption algorithm used when storing this object in Amazon S3

View file

@ -42,23 +42,41 @@ import (
// being charged for storing the uploaded parts, you must either complete or abort
// the multipart upload. Amazon S3 frees up the space used to store the parts and
// stop charging you for storing them only after you either complete or abort a
// multipart upload. You can optionally request server-side encryption. For
// server-side encryption, Amazon S3 encrypts your data as it writes it to disks in
// its data centers and decrypts it when you access it. You can provide your own
// encryption key, or use Amazon Web Services KMS keys or Amazon S3-managed
// encryption keys. If you choose to provide your own encryption key, the request
// headers you provide in UploadPart
// multipart upload. Server-side encryption is for data encryption at rest. Amazon
// S3 encrypts your data as it writes it to disks in its data centers and decrypts
// it when you access it. Amazon S3 automatically encrypts all new objects that are
// uploaded to an S3 bucket. When doing a multipart upload, if you don't specify
// encryption information in your request, the encryption setting of the uploaded
// parts is set to the default encryption configuration of the destination bucket.
// By default, all buckets have a base level of encryption configuration that uses
// server-side encryption with Amazon S3 managed keys (SSE-S3). If the destination
// bucket has a default encryption configuration that uses server-side encryption
// with an Key Management Service (KMS) key (SSE-KMS), or a customer-provided
// encryption key (SSE-C), Amazon S3 uses the corresponding KMS key, or a
// customer-provided key to encrypt the uploaded parts. When you perform a
// CreateMultipartUpload operation, if you want to use a different type of
// encryption setting for the uploaded parts, you can request that Amazon S3
// encrypts the object with a KMS key, an Amazon S3 managed key, or a
// customer-provided key. If the encryption setting in your request is different
// from the default encryption configuration of the destination bucket, the
// encryption setting in your request takes precedence. If you choose to provide
// your own encryption key, the request headers you provide in UploadPart
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) and
// UploadPartCopy
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
// requests must match the headers you used in the request to initiate the upload
// by using CreateMultipartUpload. To perform a multipart upload with encryption
// using an Amazon Web Services KMS key, the requester must have permission to the
// by using CreateMultipartUpload. you can request that Amazon S3 save the uploaded
// parts encrypted with server-side encryption with an Amazon S3 managed key
// (SSE-S3), an Key Management Service (KMS) key (SSE-KMS), or a customer-provided
// encryption key (SSE-C). To perform a multipart upload with encryption by using
// an Amazon Web Services KMS key, the requester must have permission to the
// kms:Decrypt and kms:GenerateDataKey* actions on the key. These permissions are
// required because Amazon S3 must decrypt and read data from the encrypted file
// parts before it completes the multipart upload. For more information, see
// Multipart upload API and permissions
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions)
// and Protecting data using server-side encryption with Amazon Web Services KMS
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)
// in the Amazon S3 User Guide. If your Identity and Access Management (IAM) user
// or role is in the same Amazon Web Services account as the KMS key, then you must
// have these permissions on the key policy. If your IAM user or role belongs to a
@ -84,23 +102,24 @@ import (
//
// You can
// use either a canned ACL or specify access permissions explicitly. You cannot do
// both. Server-Side- Encryption-Specific Request Headers You can optionally tell
// Amazon S3 to encrypt data at rest using server-side encryption. Server-side
// encryption is for data encryption at rest. Amazon S3 encrypts your data as it
// writes it to disks in its data centers and decrypts it when you access it. The
// option you use depends on whether you want to use Amazon Web Services managed
// encryption keys or provide your own encryption key.
// both. Server-Side- Encryption-Specific Request Headers Amazon S3 encrypts data
// by using server-side encryption with an Amazon S3 managed key (SSE-S3) by
// default. Server-side encryption is for data encryption at rest. Amazon S3
// encrypts your data as it writes it to disks in its data centers and decrypts it
// when you access it. You can request that Amazon S3 encrypts data at rest by
// using server-side encryption with other key options. The option you use depends
// on whether you want to use KMS keys (SSE-KMS) or provide your own encryption
// keys (SSE-C).
//
// * Use encryption keys
// managed by Amazon S3 or customer managed key stored in Amazon Web Services Key
// Management Service (Amazon Web Services KMS) If you want Amazon Web Services
// to manage the keys used to encrypt data, specify the following headers in the
// request.
//
// * x-amz-server-side-encryption
// * Use KMS keys (SSE-KMS) that include the Amazon Web Services
// managed key (aws/s3) and KMS customer managed keys stored in Key Management
// Service (KMS) If you want Amazon Web Services to manage the keys used to
// encrypt data, specify the following headers in the request.
//
// *
// x-amz-server-side-encryption-aws-kms-key-id
// x-amz-server-side-encryption
//
// * x-amz-server-side-encryption-aws-kms-key-id
//
// *
// x-amz-server-side-encryption-context
@ -108,15 +127,15 @@ import (
// If you specify
// x-amz-server-side-encryption:aws:kms, but don't provide
// x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web
// Services managed key in Amazon Web Services KMS to protect the data. All GET and
// PUT requests for an object protected by Amazon Web Services KMS fail if you
// don't make them with SSL or by using SigV4. For more information about
// server-side encryption with KMS key (SSE-KMS), see Protecting Data Using
// Server-Side Encryption with KMS keys
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
// Services managed key (aws/s3 key) in KMS to protect the data. All GET and PUT
// requests for an object protected by KMS fail if you don't make them by using
// Secure Sockets Layer (SSL), Transport Layer Security (TLS), or Signature Version
// 4. For more information about server-side encryption with KMS keys (SSE-KMS),
// see Protecting Data Using Server-Side Encryption with KMS keys
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html).
//
// *
// Use customer-provided encryption keys If you want to manage your own
// Use customer-provided encryption keys (SSE-C) If you want to manage your own
// encryption keys, provide all the following headers in the request.
//
// *
@ -129,9 +148,10 @@ import (
// x-amz-server-side-encryption-customer-key-MD5
//
// For more information about
// server-side encryption with KMS keys (SSE-KMS), see Protecting Data Using
// Server-Side Encryption with KMS keys
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
// server-side encryption with customer-provided encryption keys (SSE-C), see
// Protecting data using server-side encryption with customer-provided encryption
// keys (SSE-C)
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html).
//
// Access-Control-List
// (ACL)-Specific Request Headers You also can use the following access
@ -258,13 +278,13 @@ type CreateMultipartUploadInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//
@ -375,11 +395,11 @@ type CreateMultipartUploadInput struct {
// JSON with the encryption context key-value pairs.
SSEKMSEncryptionContext *string
// Specifies the ID of the symmetric customer managed key to use for object
// encryption. All GET and PUT requests for an object protected by Amazon Web
// Services KMS will fail if not made via SSL or using SigV4. For information about
// configuring using any of the officially supported Amazon Web Services SDKs and
// Amazon Web Services CLI, see Specifying the Signature Version in Request
// Specifies the ID of the symmetric encryption customer managed key to use for
// object encryption. All GET and PUT requests for an object protected by Amazon
// Web Services KMS will fail if not made via SSL or using SigV4. For information
// about configuring using any of the officially supported Amazon Web Services SDKs
// and Amazon Web Services CLI, see Specifying the Signature Version in Request
// Authentication
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version)
// in the Amazon S3 User Guide.
@ -436,13 +456,13 @@ type CreateMultipartUploadOutput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
Bucket *string
@ -476,8 +496,8 @@ type CreateMultipartUploadOutput struct {
SSEKMSEncryptionContext *string
// If present, specifies the ID of the Amazon Web Services Key Management Service
// (Amazon Web Services KMS) symmetric customer managed key that was used for the
// object.
// (Amazon Web Services KMS) symmetric encryption customer managed key that was
// used for the object.
SSEKMSKeyId *string
// The server-side encryption algorithm used when storing this object in Amazon S3

View file

@ -11,9 +11,10 @@ import (
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// This implementation of the DELETE action removes default encryption from the
// bucket. For information about the Amazon S3 default encryption feature, see
// Amazon S3 Default Bucket Encryption
// This implementation of the DELETE action resets the default encryption for the
// bucket as server-side encryption with Amazon S3 managed keys (SSE-S3). For
// information about the bucket default encryption feature, see Amazon S3 Bucket
// Default Encryption
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) in the
// Amazon S3 User Guide. To use this operation, you must have permissions to
// perform the s3:PutEncryptionConfiguration action. The bucket owner has this

View file

@ -63,7 +63,8 @@ type DeleteBucketMetricsConfigurationInput struct {
// This member is required.
Bucket *string
// The ID used to identify the metrics configuration.
// The ID used to identify the metrics configuration. The ID has a 64 character
// limit and can only contain letters, numbers, periods, dashes, and underscores.
//
// This member is required.
Id *string

View file

@ -15,14 +15,14 @@ import (
// Removes the null version (if there is one) of an object and inserts a delete
// marker, which becomes the latest version of the object. If there isn't a null
// version, Amazon S3 does not remove any objects but will still respond that the
// command was successful. To remove a specific version, you must be the bucket
// owner and you must use the version Id subresource. Using this subresource
// permanently deletes the version. If the object deleted is a delete marker,
// Amazon S3 sets the response header, x-amz-delete-marker, to true. If the object
// you want to delete is in a bucket where the bucket versioning configuration is
// MFA Delete enabled, you must include the x-amz-mfa request header in the DELETE
// versionId request. Requests that include x-amz-mfa must use HTTPS. For more
// information about MFA Delete, see Using MFA Delete
// command was successful. To remove a specific version, you must use the version
// Id subresource. Using this subresource permanently deletes the version. If the
// object deleted is a delete marker, Amazon S3 sets the response header,
// x-amz-delete-marker, to true. If the object you want to delete is in a bucket
// where the bucket versioning configuration is MFA Delete enabled, you must
// include the x-amz-mfa request header in the DELETE versionId request. Requests
// that include x-amz-mfa must use HTTPS. For more information about MFA Delete,
// see Using MFA Delete
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html). To see
// sample requests that use versioning, see Sample Request
// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete).
@ -61,13 +61,13 @@ type DeleteObjectInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -18,7 +18,7 @@ import (
// action. To delete tags of a specific object version, add the versionId query
// parameter in the request. You will need permission for the
// s3:DeleteObjectVersionTagging action. The following operations are related to
// DeleteBucketMetricsConfiguration:
// DeleteObjectTagging:
//
// * PutObjectTagging
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)
@ -51,13 +51,13 @@ type DeleteObjectTaggingInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -83,13 +83,13 @@ type DeleteObjectsInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -16,11 +16,12 @@ import (
// access control list (ACL) of a bucket. To use GET to return the ACL of the
// bucket, you must have READ_ACP access to the bucket. If READ_ACP permission is
// granted to the anonymous user, you can return the ACL of the bucket without
// using an authorization header. If your bucket uses the bucket owner enforced
// setting for S3 Object Ownership, requests to read ACLs are still supported and
// return the bucket-owner-full-control ACL with the owner being the account that
// created the bucket. For more information, see Controlling object ownership and
// disabling ACLs
// using an authorization header. To use this API against an access point, provide
// the alias of the access point in place of the bucket name. If your bucket uses
// the bucket owner enforced setting for S3 Object Ownership, requests to read ACLs
// are still supported and return the bucket-owner-full-control ACL with the owner
// being the account that created the bucket. For more information, see
// Controlling object ownership and disabling ACLs
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)
// in the Amazon S3 User Guide. Related Resources
//

View file

@ -15,8 +15,9 @@ import (
// Returns the Cross-Origin Resource Sharing (CORS) configuration information set
// for the bucket. To use this operation, you must have permission to perform the
// s3:GetBucketCORS action. By default, the bucket owner has this permission and
// can grant it to others. For more information about CORS, see Enabling
// Cross-Origin Resource Sharing
// can grant it to others. To use this API against an access point, provide the
// alias of the access point in place of the bucket name. For more information
// about CORS, see Enabling Cross-Origin Resource Sharing
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). The following
// operations are related to GetBucketCors:
//

View file

@ -12,15 +12,15 @@ import (
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// Returns the default encryption configuration for an Amazon S3 bucket. If the
// bucket does not have a default encryption configuration, GetBucketEncryption
// returns ServerSideEncryptionConfigurationNotFoundError. For information about
// the Amazon S3 default encryption feature, see Amazon S3 Default Bucket
// Returns the default encryption configuration for an Amazon S3 bucket. By
// default, all buckets have a default encryption configuration that uses
// server-side encryption with Amazon S3 managed keys (SSE-S3). For information
// about the bucket default encryption feature, see Amazon S3 Bucket Default
// Encryption
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). To use
// this operation, you must have permission to perform the
// s3:GetEncryptionConfiguration action. The bucket owner has this permission by
// default. The bucket owner can grant this permission to others. For more
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) in the
// Amazon S3 User Guide. To use this operation, you must have permission to perform
// the s3:GetEncryptionConfiguration action. The bucket owner has this permission
// by default. The bucket owner can grant this permission to others. For more
// information about permissions, see Permissions Related to Bucket Subresource
// Operations
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)

View file

@ -25,10 +25,13 @@ import (
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html). To use
// this implementation of the operation, you must be the bucket owner. To use this
// API against an access point, provide the alias of the access point in place of
// the bucket name. The following operations are related to GetBucketLocation:
// the bucket name. For requests made using Amazon Web Services Signature Version 4
// (SigV4), we recommend that you use HeadBucket
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html) to return
// the bucket Region instead of GetBucketLocation. The following operations are
// related to GetBucketLocation:
//
// *
// GetObject
// * GetObject
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
//
// *

View file

@ -13,8 +13,8 @@ import (
)
// Returns the logging status of a bucket and the permissions users have to view
// and modify that status. To use GET, you must be the bucket owner. The following
// operations are related to GetBucketLogging:
// and modify that status. The following operations are related to
// GetBucketLogging:
//
// * CreateBucket
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)

View file

@ -64,7 +64,8 @@ type GetBucketMetricsConfigurationInput struct {
// This member is required.
Bucket *string
// The ID used to identify the metrics configuration.
// The ID used to identify the metrics configuration. The ID has a 64 character
// limit and can only contain letters, numbers, periods, dashes, and underscores.
//
// This member is required.
Id *string

View file

@ -17,9 +17,10 @@ import (
// element. By default, you must be the bucket owner to read the notification
// configuration of a bucket. However, the bucket owner can use a bucket policy to
// grant permission to other users to read this configuration with the
// s3:GetBucketNotification permission. For more information about setting and
// reading the notification configuration on a bucket, see Setting Up Notification
// of Bucket Events
// s3:GetBucketNotification permission. To use this API against an access point,
// provide the alias of the access point in place of the bucket name. For more
// information about setting and reading the notification configuration on a
// bucket, see Setting Up Notification of Bucket Events
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). For
// more information about bucket policies, see Using Bucket Policies
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). The

View file

@ -21,8 +21,9 @@ import (
// Method Not Allowed error. As a security precaution, the root user of the Amazon
// Web Services account that owns a bucket can always use this operation, even if
// the policy explicitly denies the root user the ability to perform this action.
// For more information about bucket policies, see Using Bucket Policies and User
// Policies
// To use this API against an access point, provide the alias of the access point
// in place of the bucket name. For more information about bucket policies, see
// Using Bucket Policies and User Policies
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). The
// following action is related to GetBucketPolicy:
//

View file

@ -37,7 +37,7 @@ import (
// Archive tiers, before you can retrieve the object you must first restore a copy
// using RestoreObject
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html).
// Otherwise, this action returns an InvalidObjectStateError error. For information
// Otherwise, this action returns an InvalidObjectState error. For information
// about restoring archived objects, see Restoring Archived Objects
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html).
// Encryption request headers, like x-amz-server-side-encryption, should not be
@ -85,14 +85,16 @@ import (
// * If you
// supply a versionId, you need the s3:GetObjectVersion permission to access a
// specific version of an object. If you request a specific version, you do not
// need to have the s3:GetObject permission.
// need to have the s3:GetObject permission. If you request the current version
// without a specific version ID, only s3:GetObject permission is required.
// s3:GetObjectVersion permission won't be required.
//
// * If the current version of the
// object is a delete marker, Amazon S3 behaves as if the object was deleted and
// includes x-amz-delete-marker: true in the response.
// * If the current version of
// the object is a delete marker, Amazon S3 behaves as if the object was deleted
// and includes x-amz-delete-marker: true in the response.
//
// For more information about
// versioning, see PutBucketVersioning
// For more information
// about versioning, see PutBucketVersioning
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html).
// Overriding Response Header Values There are times when you want to override
// certain response header values in a GET response. For example, you might
@ -167,13 +169,13 @@ type GetObjectInput struct {
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using an Object Lambda access point the
// hostname takes the form
// AccessPointName-AccountId.s3-object-lambda.Region.amazonaws.com. When using this
// action with Amazon S3 on Outposts, you must direct requests to the S3 on
// AccessPointName-AccountId.s3-object-lambda.Region.amazonaws.com. When you use
// this action with Amazon S3 on Outposts, you must direct requests to the S3 on
// Outposts hostname. The S3 on Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//
@ -215,10 +217,9 @@ type GetObjectInput struct {
PartNumber int32
// Downloads the specified range bytes of an object. For more information about the
// HTTP Range header, see
// https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
// (https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35). Amazon S3
// doesn't support retrieving multiple ranges of data per GET request.
// HTTP Range header, see https://www.rfc-editor.org/rfc/rfc9110.html#name-range
// (https://www.rfc-editor.org/rfc/rfc9110.html#name-range). Amazon S3 doesn't
// support retrieving multiple ranges of data per GET request.
Range *string
// Confirms that the requester knows that they will be charged for the request.
@ -403,8 +404,8 @@ type GetObjectOutput struct {
SSECustomerKeyMD5 *string
// If present, specifies the ID of the Amazon Web Services Key Management Service
// (Amazon Web Services KMS) symmetric customer managed key that was used for the
// object.
// (Amazon Web Services KMS) symmetric encryption customer managed key that was
// used for the object.
SSEKMSKeyId *string
// The server-side encryption algorithm used when storing this object in Amazon S3

View file

@ -16,16 +16,15 @@ import (
// Retrieves all the metadata from an object without returning the object itself.
// This action is useful if you're interested only in an object's metadata. To use
// GetObjectAttributes, you must have READ access to the object.
// GetObjectAttributes combines the functionality of GetObjectAcl,
// GetObjectLegalHold, GetObjectLockConfiguration, GetObjectRetention,
// GetObjectTagging, HeadObject, and ListParts. All of the data returned with each
// of those individual calls can be returned with a single call to
// GetObjectAttributes. If you encrypt an object by using server-side encryption
// with customer-provided encryption keys (SSE-C) when you store the object in
// Amazon S3, then when you retrieve the metadata from the object, you must use the
// following headers:
// GetObjectAttributes combines the functionality of HeadObject and ListParts. All
// of the data returned with each of those individual calls can be returned with a
// single call to GetObjectAttributes. If you encrypt an object by using
// server-side encryption with customer-provided encryption keys (SSE-C) when you
// store the object in Amazon S3, then when you retrieve the metadata from the
// object, you must use the following headers:
//
// * x-amz-server-side-encryption-customer-algorithm
// *
// x-amz-server-side-encryption-customer-algorithm
//
// *
// x-amz-server-side-encryption-customer-key
@ -42,23 +41,23 @@ import (
// x-amz-server-side-encryption, should not be sent for GET requests if your object
// uses server-side encryption with Amazon Web Services KMS keys stored in Amazon
// Web Services Key Management Service (SSE-KMS) or server-side encryption with
// Amazon S3 managed encryption keys (SSE-S3). If your object does use these types
// of keys, you'll get an HTTP 400 Bad Request error.
// Amazon S3 managed keys (SSE-S3). If your object does use these types of keys,
// you'll get an HTTP 400 Bad Request error.
//
// * The last modified property
// in this case is the creation date of the object.
// * The last modified property in this
// case is the creation date of the object.
//
// Consider the following when
// using request headers:
// Consider the following when using
// request headers:
//
// * If both of the If-Match and If-Unmodified-Since
// headers are present in the request as follows, then Amazon S3 returns the HTTP
// status code 200 OK and the data requested:
// * If both of the If-Match and If-Unmodified-Since headers are
// present in the request as follows, then Amazon S3 returns the HTTP status code
// 200 OK and the data requested:
//
// * If-Match condition evaluates to
// true.
// * If-Match condition evaluates to true.
//
// * If-Unmodified-Since condition evaluates to false.
// *
// If-Unmodified-Since condition evaluates to false.
//
// * If both of the
// If-None-Match and If-Modified-Since headers are present in the request as
@ -146,13 +145,13 @@ type GetObjectAttributesInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -59,13 +59,13 @@ type GetObjectTaggingInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -14,14 +14,11 @@ import (
)
// Returns torrent files from a bucket. BitTorrent can save you bandwidth when
// you're distributing large files. For more information about BitTorrent, see
// Using BitTorrent with Amazon S3
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html). You can get
// torrent only for objects that are less than 5 GB in size, and that are not
// encrypted using server-side encryption with a customer-provided encryption key.
// To use GET, you must have READ access to the object. This action is not
// supported by Amazon S3 on Outposts. The following action is related to
// GetObjectTorrent:
// you're distributing large files. You can get torrent only for objects that are
// less than 5 GB in size, and that are not encrypted using server-side encryption
// with a customer-provided encryption key. To use GET, you must have READ access
// to the object. This action is not supported by Amazon S3 on Outposts. The
// following action is related to GetObjectTorrent:
//
// * GetObject
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)

View file

@ -20,11 +20,11 @@ import (
// This action is useful to determine if a bucket exists and you have permission to
// access it. The action returns a 200 OK if the bucket exists and you have
// permission to access it. If the bucket does not exist or you do not have
// permission to access it, the HEAD request returns a generic 404 Not Found or 403
// Forbidden code. A message body is not included, so you cannot determine the
// exception beyond these error codes. To use this operation, you must have
// permissions to perform the s3:ListBucket action. The bucket owner has this
// permission by default and can grant this permission to others. For more
// permission to access it, the HEAD request returns a generic 400 Bad Request, 403
// Forbidden or 404 Not Found code. A message body is not included, so you cannot
// determine the exception beyond these error codes. To use this operation, you
// must have permissions to perform the s3:ListBucket action. The bucket owner has
// this permission by default and can grant this permission to others. For more
// information about permissions, see Permissions Related to Bucket Subresource
// Operations
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
@ -62,13 +62,13 @@ type HeadBucketInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -23,9 +23,9 @@ import (
// To use HEAD, you must have READ access to the object. A HEAD request has the
// same options as a GET action on an object. The response is identical to the GET
// response except that there is no response body. Because of this, if the HEAD
// request generates an error, it returns a generic 404 Not Found or 403 Forbidden
// code. It is not possible to retrieve the exact exception beyond these error
// codes. If you encrypt an object by using server-side encryption with
// request generates an error, it returns a generic 400 Bad Request, 403 Forbidden
// or 404 Not Found code. It is not possible to retrieve the exact exception beyond
// these error codes. If you encrypt an object by using server-side encryption with
// customer-provided encryption keys (SSE-C) when you store the object in Amazon
// S3, then when you retrieve the metadata from the object, you must use the
// following headers:
@ -130,13 +130,13 @@ type HeadObjectInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//
@ -181,8 +181,9 @@ type HeadObjectInput struct {
// object.
PartNumber int32
// Because HeadObject returns only the metadata for an object, this parameter has
// no effect.
// HeadObject returns only the metadata for an object. If the Range is satisfiable,
// only the ContentLength is affected in the response. If the Range is not
// satisfiable, S3 returns a 416 - Requested Range Not Satisfiable error.
Range *string
// Confirms that the requester knows that they will be charged for the request.
@ -393,14 +394,12 @@ type HeadObjectOutput struct {
SSECustomerKeyMD5 *string
// If present, specifies the ID of the Amazon Web Services Key Management Service
// (Amazon Web Services KMS) symmetric customer managed key that was used for the
// object.
// (Amazon Web Services KMS) symmetric encryption customer managed key that was
// used for the object.
SSEKMSKeyId *string
// If the object is stored using server-side encryption either with an Amazon Web
// Services KMS key or an Amazon S3-managed encryption key, the response includes
// this header with the value of the server-side encryption algorithm used when
// storing this object in Amazon S3 (for example, AES256, aws:kms).
// The server-side encryption algorithm used when storing this object in Amazon S3
// (for example, AES256, aws:kms).
ServerSideEncryption types.ServerSideEncryption
// Provides storage class information of the object. Amazon S3 returns this header

View file

@ -13,7 +13,10 @@ import (
)
// Returns a list of all buckets owned by the authenticated sender of the request.
// To use this operation, you must have the s3:ListAllMyBuckets permission.
// To use this operation, you must have the s3:ListAllMyBuckets permission. For
// information about Amazon S3 buckets, see Creating, configuring, and working with
// Amazon S3 buckets
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html).
func (c *Client) ListBuckets(ctx context.Context, params *ListBucketsInput, optFns ...func(*Options)) (*ListBucketsOutput, error) {
if params == nil {
params = &ListBucketsInput{}

View file

@ -77,13 +77,13 @@ type ListMultipartUploadsInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -66,13 +66,13 @@ type ListObjectsInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -72,13 +72,13 @@ type ListObjectsV2Input struct {
// provide the access point ARN in place of the bucket name. For more information
// about access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//
@ -162,8 +162,8 @@ type ListObjectsV2Output struct {
IsTruncated bool
// KeyCount is the number of keys returned with this request. KeyCount will always
// be less than or equals to MaxKeys field. Say you ask for 50 keys, your result
// will include less than equals 50 keys
// be less than or equal to the MaxKeys field. Say you ask for 50 keys, your result
// will include 50 keys or fewer.
KeyCount int32
// Sets the maximum number of keys returned in the response. By default the action
@ -178,13 +178,13 @@ type ListObjectsV2Output struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
Name *string

View file

@ -81,13 +81,13 @@ type ListPartsInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -113,15 +113,15 @@ import (
// <>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<>
//
// * By Email
// address: <>Grantees@email.com<>lt;/Grantee> The grantee is resolved to the
// CanonicalUser and, in a response to a GET Object acl request, appears as the
// CanonicalUser. Using email addresses to specify a grantee is only supported in
// the following Amazon Web Services Regions:
// address: <>Grantees@email.com<>& The grantee is resolved to the CanonicalUser
// and, in a response to a GET Object acl request, appears as the CanonicalUser.
// Using email addresses to specify a grantee is only supported in the following
// Amazon Web Services Regions:
//
// * US East (N. Virginia)
//
// * US West
// (N. California)
// * US West (N.
// California)
//
// * US West (Oregon)
//

View file

@ -14,14 +14,13 @@ import (
)
// This action uses the encryption subresource to configure default encryption and
// Amazon S3 Bucket Key for an existing bucket. Default encryption for a bucket can
// use server-side encryption with Amazon S3-managed keys (SSE-S3) or customer
// managed keys (SSE-KMS). If you specify default encryption using SSE-KMS, you can
// also configure Amazon S3 Bucket Key. When the default encryption is SSE-KMS, if
// you upload an object to the bucket and do not specify the KMS key to use for
// encryption, Amazon S3 uses the default Amazon Web Services managed KMS key for
// your account. For information about default encryption, see Amazon S3 default
// bucket encryption
// Amazon S3 Bucket Keys for an existing bucket. By default, all buckets have a
// default encryption configuration that uses server-side encryption with Amazon S3
// managed keys (SSE-S3). You can optionally configure default encryption for a
// bucket by using server-side encryption with an Amazon Web Services KMS key
// (SSE-KMS) or a customer-provided key (SSE-C). If you specify default encryption
// by using SSE-KMS, you can also configure Amazon S3 Bucket Keys. For information
// about bucket default encryption, see Amazon S3 bucket default encryption
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) in the
// Amazon S3 User Guide. For more information about S3 Bucket Keys, see Amazon S3
// Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) in
@ -63,9 +62,12 @@ func (c *Client) PutBucketEncryption(ctx context.Context, params *PutBucketEncry
type PutBucketEncryptionInput struct {
// Specifies default encryption for a bucket using server-side encryption with
// Amazon S3-managed keys (SSE-S3) or customer managed keys (SSE-KMS). For
// information about the Amazon S3 default encryption feature, see Amazon S3
// Default Bucket Encryption
// different key options. By default, all buckets have a default encryption
// configuration that uses server-side encryption with Amazon S3 managed keys
// (SSE-S3). You can optionally configure default encryption for a bucket by using
// server-side encryption with an Amazon Web Services KMS key (SSE-KMS) or a
// customer-provided key (SSE-C). For information about the bucket default
// encryption feature, see Amazon S3 Bucket Default Encryption
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) in the
// Amazon S3 User Guide.
//

View file

@ -31,12 +31,24 @@ import (
// location. For an example policy, see Granting Permissions for Amazon S3
// Inventory and Storage Class Analysis
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9).
// To use this operation, you must have permissions to perform the
// Permissions To use this operation, you must have permission to perform the
// s3:PutInventoryConfiguration action. The bucket owner has this permission by
// default and can grant this permission to others. For more information about
// permissions, see Permissions Related to Bucket Subresource Operations
// default and can grant this permission to others. The
// s3:PutInventoryConfiguration permission allows a user to create an S3 Inventory
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory.html)
// report that includes all object metadata fields available and to specify the
// destination bucket to store the inventory. A user with read access to objects in
// the destination bucket can also access all object metadata fields that are
// available in the inventory report. To restrict access to an inventory report,
// see Restricting access to an Amazon S3 Inventory report
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-use-case-10)
// in the Amazon S3 User Guide. For more information about the metadata fields
// available in S3 Inventory, see Amazon S3 Inventory lists
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory.html#storage-inventory-contents)
// in the Amazon S3 User Guide. For more information about permissions, see
// Permissions related to bucket subresource operations
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
// and Managing Access Permissions to Your Amazon S3 Resources
// and Identity and access management in Amazon S3
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
// in the Amazon S3 User Guide. Special Errors
//

View file

@ -73,7 +73,8 @@ type PutBucketMetricsConfigurationInput struct {
// This member is required.
Bucket *string
// The ID used to identify the metrics configuration.
// The ID used to identify the metrics configuration. The ID has a 64 character
// limit and can only contain letters, numbers, periods, dashes, and underscores.
//
// This member is required.
Id *string

View file

@ -18,22 +18,29 @@ import (
// Adds an object to a bucket. You must have WRITE permissions on a bucket to add
// an object to it. Amazon S3 never adds partial objects; if you receive a success
// response, Amazon S3 added the entire object to the bucket. Amazon S3 is a
// distributed system. If it receives multiple write requests for the same object
// simultaneously, it overwrites all but the last object written. Amazon S3 does
// not provide object locking; if you need this, make sure to build it into your
// application layer or use versioning instead. To ensure that data is not
// corrupted traversing the network, use the Content-MD5 header. When you use this
// header, Amazon S3 checks the object against the provided MD5 value and, if they
// do not match, returns an error. Additionally, you can calculate the MD5 while
// putting an object to Amazon S3 and compare the returned ETag to the calculated
// MD5 value.
// response, Amazon S3 added the entire object to the bucket. You cannot use
// PutObject to only update a single piece of metadata for an existing object. You
// must put the entire object with updated metadata if you want to update some
// values. Amazon S3 is a distributed system. If it receives multiple write
// requests for the same object simultaneously, it overwrites all but the last
// object written. To prevent objects from being deleted or overwritten, you can
// use Amazon S3 Object Lock
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html). To
// ensure that data is not corrupted traversing the network, use the Content-MD5
// header. When you use this header, Amazon S3 checks the object against the
// provided MD5 value and, if they do not match, returns an error. Additionally,
// you can calculate the MD5 while putting an object to Amazon S3 and compare the
// returned ETag to the calculated MD5 value.
//
// * To successfully complete the PutObject request, you must have the
// s3:PutObject in your IAM permissions.
// * To successfully complete the
// PutObject request, you must have the s3:PutObject in your IAM permissions.
//
// * To successfully change the objects acl
// of your PutObject request, you must have the s3:PutObjectAcl in your IAM
// * To
// successfully change the objects acl of your PutObject request, you must have the
// s3:PutObjectAcl in your IAM permissions.
//
// * To successfully set the tag-set with
// your PutObject request, you must have the s3:PutObjectTagging in your IAM
// permissions.
//
// * The Content-MD5 header is required for any request to upload an
@ -42,23 +49,21 @@ import (
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html) in
// the Amazon S3 User Guide.
//
// Server-side Encryption You can optionally request
// server-side encryption. With server-side encryption, Amazon S3 encrypts your
// data as it writes it to disks in its data centers and decrypts the data when you
// access it. You have the option to provide your own encryption key or use Amazon
// Web Services managed encryption keys (SSE-S3 or SSE-KMS). For more information,
// see Using Server-Side Encryption
// You have three mutually exclusive options to protect
// data using server-side encryption in Amazon S3, depending on how you choose to
// manage the encryption keys. Specifically, the encryption key options are Amazon
// S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS), and
// customer-provided keys (SSE-C). Amazon S3 encrypts data with server-side
// encryption by using Amazon S3 managed keys (SSE-S3) by default. You can
// optionally tell Amazon S3 to encrypt data at by rest using server-side
// encryption with other key options. For more information, see Using Server-Side
// Encryption
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html).
// If you request server-side encryption using Amazon Web Services Key Management
// Service (SSE-KMS), you can enable an S3 Bucket Key at the object-level. For more
// information, see Amazon S3 Bucket Keys
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) in the Amazon
// S3 User Guide. Access Control List (ACL)-Specific Request Headers You can use
// headers to grant ACL- based permissions. By default, all objects are private.
// Only the owner has full access control. When adding a new object, you can grant
// permissions to individual Amazon Web Services accounts or to predefined groups
// defined by Amazon S3. These permissions are then added to the ACL on the object.
// For more information, see Access Control List (ACL) Overview
// When adding a new object, you can use headers to grant ACL-based permissions to
// individual Amazon Web Services accounts or to predefined groups defined by
// Amazon S3. These permissions are then added to the ACL on the object. By
// default, all objects are private. Only the owner has full access control. For
// more information, see Access Control List (ACL) Overview
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html) and Managing
// ACLs Using the REST API
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html). If
@ -74,26 +79,26 @@ import (
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)
// in the Amazon S3 User Guide. If your bucket uses the bucket owner enforced
// setting for Object Ownership, all objects written to the bucket by any account
// will be owned by the bucket owner. Storage Class Options By default, Amazon S3
// uses the STANDARD Storage Class to store newly created objects. The STANDARD
// storage class provides high durability and high availability. Depending on
// performance needs, you can specify a different Storage Class. Amazon S3 on
// Outposts only uses the OUTPOSTS Storage Class. For more information, see Storage
// Classes
// will be owned by the bucket owner. By default, Amazon S3 uses the STANDARD
// Storage Class to store newly created objects. The STANDARD storage class
// provides high durability and high availability. Depending on performance needs,
// you can specify a different Storage Class. Amazon S3 on Outposts only uses the
// OUTPOSTS Storage Class. For more information, see Storage Classes
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html) in
// the Amazon S3 User Guide. Versioning If you enable versioning for a bucket,
// Amazon S3 automatically generates a unique version ID for the object being
// stored. Amazon S3 returns this ID in the response. When you enable versioning
// for a bucket, if Amazon S3 receives multiple write requests for the same object
// simultaneously, it stores all of the objects. For more information about
// versioning, see Adding Objects to Versioning Enabled Buckets
// the Amazon S3 User Guide. If you enable versioning for a bucket, Amazon S3
// automatically generates a unique version ID for the object being stored. Amazon
// S3 returns this ID in the response. When you enable versioning for a bucket, if
// Amazon S3 receives multiple write requests for the same object simultaneously,
// it stores all of the objects. For more information about versioning, see Adding
// Objects to Versioning Enabled Buckets
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/AddingObjectstoVersioningEnabledBuckets.html).
// For information about returning the versioning state of a bucket, see
// GetBucketVersioning
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html).
// Related Resources
// For more information about related Amazon S3 APIs, see the following:
//
// * CopyObject
// *
// CopyObject
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
//
// *
@ -124,13 +129,13 @@ type PutObjectInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//
@ -206,15 +211,15 @@ type PutObjectInput struct {
ChecksumSHA256 *string
// Specifies presentational information for the object. For more information, see
// http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1
// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1).
// https://www.rfc-editor.org/rfc/rfc6266#section-4
// (https://www.rfc-editor.org/rfc/rfc6266#section-4).
ContentDisposition *string
// Specifies what content encodings have been applied to the object and thus what
// decoding mechanisms must be applied to obtain the media-type referenced by the
// Content-Type header field. For more information, see
// http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11
// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11).
// https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding
// (https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding).
ContentEncoding *string
// The language the content is in.
@ -222,8 +227,8 @@ type PutObjectInput struct {
// Size of the body in bytes. This parameter is useful when the size of the body
// cannot be determined automatically. For more information, see
// http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13).
// https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
// (https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length).
ContentLength int64
// The base64-encoded 128-bit MD5 digest of the message (without the headers)
@ -236,8 +241,8 @@ type PutObjectInput struct {
ContentMD5 *string
// A standard MIME type describing the format of the contents. For more
// information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17
// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17).
// information, see https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type
// (https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type).
ContentType *string
// The account ID of the expected bucket owner. If the bucket is owned by a
@ -246,8 +251,8 @@ type PutObjectInput struct {
ExpectedBucketOwner *string
// The date and time at which the object is no longer cacheable. For more
// information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21
// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21).
// information, see https://www.rfc-editor.org/rfc/rfc7234#section-5.3
// (https://www.rfc-editor.org/rfc/rfc7234#section-5.3).
Expires *time.Time
// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object. This
@ -307,12 +312,14 @@ type PutObjectInput struct {
// Specifies the Amazon Web Services KMS Encryption Context to use for object
// encryption. The value of this header is a base64-encoded UTF-8 string holding
// JSON with the encryption context key-value pairs.
// JSON with the encryption context key-value pairs. This value is stored as object
// metadata and automatically gets passed on to Amazon Web Services KMS for future
// GetObject or CopyObject operations on this object.
SSEKMSEncryptionContext *string
// If x-amz-server-side-encryption is present and has the value of aws:kms, this
// header specifies the ID of the Amazon Web Services Key Management Service
// (Amazon Web Services KMS) symmetrical customer managed key that was used for the
// If x-amz-server-side-encryption has a valid value of aws:kms, this header
// specifies the ID of the Amazon Web Services Key Management Service (Amazon Web
// Services KMS) symmetric encryption customer managed key that was used for the
// object. If you specify x-amz-server-side-encryption:aws:kms, but do not provide
// x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web
// Services managed key to protect the data. If the KMS key does not exist in the
@ -419,19 +426,19 @@ type PutObjectOutput struct {
// If present, specifies the Amazon Web Services KMS Encryption Context to use for
// object encryption. The value of this header is a base64-encoded UTF-8 string
// holding JSON with the encryption context key-value pairs.
// holding JSON with the encryption context key-value pairs. This value is stored
// as object metadata and automatically gets passed on to Amazon Web Services KMS
// for future GetObject or CopyObject operations on this object.
SSEKMSEncryptionContext *string
// If x-amz-server-side-encryption is present and has the value of aws:kms, this
// header specifies the ID of the Amazon Web Services Key Management Service
// (Amazon Web Services KMS) symmetric customer managed key that was used for the
// If x-amz-server-side-encryption is has a valid value of aws:kms, this header
// specifies the ID of the Amazon Web Services Key Management Service (Amazon Web
// Services KMS) symmetric encryption customer managed key that was used for the
// object.
SSEKMSKeyId *string
// If you specified server-side encryption either with an Amazon Web Services KMS
// key or Amazon S3-managed encryption key in your PUT request, the response
// includes this header. It confirms the encryption algorithm that Amazon S3 used
// to encrypt the object.
// The server-side encryption algorithm used when storing this object in Amazon S3
// (for example, AES256, aws:kms).
ServerSideEncryption types.ServerSideEncryption
// Version of the object.

View file

@ -185,13 +185,13 @@ type PutObjectAclInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -88,13 +88,13 @@ type PutObjectTaggingInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -30,24 +30,6 @@ import (
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
// and Managing Access Permissions to Your Amazon S3 Resources
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
// in the Amazon S3 User Guide. Querying Archives with Select Requests You use a
// select type of request to perform SQL queries on archived objects. The archived
// objects that are being queried by the select request must be formatted as
// uncompressed comma-separated values (CSV) files. You can run queries and custom
// analytics on your archived data without having to restore your data to a hotter
// Amazon S3 tier. For an overview about select requests, see Querying Archived
// Objects
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
// in the Amazon S3 User Guide. When making a select request, do the following:
//
// *
// Define an output location for the select query's output. This must be an Amazon
// S3 bucket in the same Amazon Web Services Region as the bucket that contains the
// archive object that is being queried. The Amazon Web Services account that
// initiates the job must have permissions to write to the S3 bucket. You can
// specify the storage class and encryption for the output objects stored in the
// bucket. For more information about output, see Querying Archived Objects
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
// in the Amazon S3 User Guide. For more information about the S3 structure in the
// request body, see the following:
//
@ -81,15 +63,11 @@ import (
// query.) You cannot mix ordinal positions with header column names. SELECT s.Id,
// s.FirstName, s.SSN FROM S3Object s
//
// For more information about using SQL with S3
// Glacier Select restore, see SQL Reference for Amazon S3 Select and S3 Glacier
// Select
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
// in the Amazon S3 User Guide. When making a select request, you can also do the
// following:
// When making a select request, you can also
// do the following:
//
// * To expedite your queries, specify the Expedited tier. For more
// information about tiers, see "Restoring Archives," later in this topic.
// * To expedite your queries, specify the Expedited tier. For
// more information about tiers, see "Restoring Archives," later in this topic.
//
// *
// Specify details about the data serialization format of both the input object
@ -104,59 +82,62 @@ import (
// lifecycle policy.
//
// * You can issue more than one select request on the same
// Amazon S3 object. Amazon S3 doesn't deduplicate requests, so avoid issuing
// Amazon S3 object. Amazon S3 doesn't duplicate requests, so avoid issuing
// duplicate requests.
//
// * Amazon S3 accepts a select request even if the object has
// already been restored. A select request doesnt return error response
// 409.
//
// Restoring objects Objects that you archive to the S3 Glacier or S3 Glacier
// Deep Archive storage class, and S3 Intelligent-Tiering Archive or S3
// Intelligent-Tiering Deep Archive tiers are not accessible in real time. For
// objects in Archive Access or Deep Archive Access tiers you must first initiate a
// restore request, and then wait until the object is moved into the Frequent
// Access tier. For objects in S3 Glacier or S3 Glacier Deep Archive storage
// classes you must first initiate a restore request, and then wait until a
// temporary copy of the object is available. To access an archived object, you
// must restore the object for the duration (number of days) that you specify. To
// restore a specific object version, you can provide a version ID. If you don't
// provide a version ID, Amazon S3 restores the current version. When restoring an
// archived object (or using a select request), you can specify one of the
// following data access tier options in the Tier element of the request body:
// Restoring objects Objects that you archive to the S3 Glacier Flexible
// Retrieval or S3 Glacier Deep Archive storage class, and S3 Intelligent-Tiering
// Archive or S3 Intelligent-Tiering Deep Archive tiers, are not accessible in real
// time. For objects in the S3 Glacier Flexible Retrieval or S3 Glacier Deep
// Archive storage classes, you must first initiate a restore request, and then
// wait until a temporary copy of the object is available. If you want a permanent
// copy of the object, create a copy of it in the Amazon S3 Standard storage class
// in your S3 bucket. To access an archived object, you must restore the object for
// the duration (number of days) that you specify. For objects in the Archive
// Access or Deep Archive Access tiers of S3 Intelligent-Tiering, you must first
// initiate a restore request, and then wait until the object is moved into the
// Frequent Access tier. To restore a specific object version, you can provide a
// version ID. If you don't provide a version ID, Amazon S3 restores the current
// version. When restoring an archived object, you can specify one of the following
// data access tier options in the Tier element of the request body:
//
// *
// Expedited - Expedited retrievals allow you to quickly access your data stored in
// the S3 Glacier storage class or S3 Intelligent-Tiering Archive tier when
// occasional urgent requests for a subset of archives are required. For all but
// the largest archived objects (250 MB+), data accessed using Expedited retrievals
// is typically made available within 15 minutes. Provisioned capacity ensures
// that retrieval capacity for Expedited retrievals is available when you need it.
// Expedited retrievals and provisioned capacity are not available for objects
// stored in the S3 Glacier Deep Archive storage class or S3 Intelligent-Tiering
// Deep Archive tier.
//
// * Standard - Standard retrievals allow you to access any of
// your archived objects within several hours. This is the default option for
// retrieval requests that do not specify the retrieval option. Standard retrievals
// typically finish within 35 hours for objects stored in the S3 Glacier storage
// class or S3 Intelligent-Tiering Archive tier. They typically finish within 12
// hours for objects stored in the S3 Glacier Deep Archive storage class or S3
// Intelligent-Tiering Deep Archive tier. Standard retrievals are free for objects
// stored in S3 Intelligent-Tiering.
//
// * Bulk - Bulk retrievals are the lowest-cost
// retrieval option in S3 Glacier, enabling you to retrieve large amounts, even
// petabytes, of data inexpensively. Bulk retrievals typically finish within 512
// hours for objects stored in the S3 Glacier storage class or S3
// Intelligent-Tiering Archive tier. They typically finish within 48 hours for
// * Expedited -
// Expedited retrievals allow you to quickly access your data stored in the S3
// Glacier Flexible Retrieval storage class or S3 Intelligent-Tiering Archive tier
// when occasional urgent requests for a subset of archives are required. For all
// but the largest archived objects (250 MB+), data accessed using Expedited
// retrievals is typically made available within 15 minutes. Provisioned capacity
// ensures that retrieval capacity for Expedited retrievals is available when you
// need it. Expedited retrievals and provisioned capacity are not available for
// objects stored in the S3 Glacier Deep Archive storage class or S3
// Intelligent-Tiering Deep Archive tier. Bulk retrievals are free for objects
// stored in S3 Intelligent-Tiering.
// Intelligent-Tiering Deep Archive tier.
//
// For more information about archive retrieval
// options and provisioned capacity for Expedited data access, see Restoring
// Archived Objects
// * Standard - Standard retrievals allow
// you to access any of your archived objects within several hours. This is the
// default option for retrieval requests that do not specify the retrieval option.
// Standard retrievals typically finish within 35 hours for objects stored in the
// S3 Glacier Flexible Retrieval storage class or S3 Intelligent-Tiering Archive
// tier. They typically finish within 12 hours for objects stored in the S3 Glacier
// Deep Archive storage class or S3 Intelligent-Tiering Deep Archive tier. Standard
// retrievals are free for objects stored in S3 Intelligent-Tiering.
//
// * Bulk - Bulk
// retrievals free for objects stored in the S3 Glacier Flexible Retrieval and S3
// Intelligent-Tiering storage classes, enabling you to retrieve large amounts,
// even petabytes, of data at no cost. Bulk retrievals typically finish within 512
// hours for objects stored in the S3 Glacier Flexible Retrieval storage class or
// S3 Intelligent-Tiering Archive tier. Bulk retrievals are also the lowest-cost
// retrieval option when restoring objects from S3 Glacier Deep Archive. They
// typically finish within 48 hours for objects stored in the S3 Glacier Deep
// Archive storage class or S3 Intelligent-Tiering Deep Archive tier.
//
// For more
// information about archive retrieval options and provisioned capacity for
// Expedited data access, see Restoring Archived Objects
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html) in the
// Amazon S3 User Guide. You can use Amazon S3 restore speed upgrade to change the
// restore speed to a faster speed while it is in progress. For more information,
@ -226,11 +207,6 @@ import (
// *
// GetBucketNotificationConfiguration
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html)
//
// *
// SQL Reference for Amazon S3 Select and S3 Glacier Select
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
// in the Amazon S3 User Guide
func (c *Client) RestoreObject(ctx context.Context, params *RestoreObjectInput, optFns ...func(*Options)) (*RestoreObjectOutput, error) {
if params == nil {
params = &RestoreObjectInput{}
@ -256,13 +232,13 @@ type RestoreObjectInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//

View file

@ -25,9 +25,6 @@ import (
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html)
// and SELECT Command
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-select.html)
// in the Amazon S3 User Guide. For more information about using SQL with Amazon S3
// Select, see SQL Reference for Amazon S3 Select and S3 Glacier Select
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
// in the Amazon S3 User Guide. Permissions You must have s3:GetObject permission
// for this operation. Amazon S3 Select does not support anonymous access. For more
// information about permissions, see Specifying Permissions in a Policy
@ -57,10 +54,10 @@ import (
// Encryption Keys)
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html)
// in the Amazon S3 User Guide. For objects that are encrypted with Amazon S3
// managed encryption keys (SSE-S3) and Amazon Web Services KMS keys (SSE-KMS),
// server-side encryption is handled transparently, so you don't need to specify
// anything. For more information about server-side encryption, including SSE-S3
// and SSE-KMS, see Protecting Data Using Server-Side Encryption
// managed keys (SSE-S3) and Amazon Web Services KMS keys (SSE-KMS), server-side
// encryption is handled transparently, so you don't need to specify anything. For
// more information about server-side encryption, including SSE-S3 and SSE-KMS, see
// Protecting Data Using Server-Side Encryption
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) in
// the Amazon S3 User Guide.
//

View file

@ -49,26 +49,33 @@ import (
// the Amazon S3 User Guide . For information on the permissions required to use
// the multipart upload API, go to Multipart Upload and Permissions
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html) in the
// Amazon S3 User Guide. You can optionally request server-side encryption where
// Amazon S3 User Guide. Server-side encryption is for data encryption at rest.
// Amazon S3 encrypts your data as it writes it to disks in its data centers and
// decrypts it for you when you access it. You have the option of providing your
// own encryption key, or you can use the Amazon Web Services managed encryption
// keys. If you choose to provide your own encryption key, the request headers you
// provide in the request must match the headers you used in the request to
// initiate the upload by using CreateMultipartUpload
// decrypts it when you access it. You have three mutually exclusive options to
// protect data using server-side encryption in Amazon S3, depending on how you
// choose to manage the encryption keys. Specifically, the encryption key options
// are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS), and
// Customer-Provided Keys (SSE-C). Amazon S3 encrypts data with server-side
// encryption using Amazon S3 managed keys (SSE-S3) by default. You can optionally
// tell Amazon S3 to encrypt data at rest using server-side encryption with other
// key options. The option you use depends on whether you want to use KMS keys
// (SSE-KMS) or provide your own encryption key (SSE-C). If you choose to provide
// your own encryption key, the request headers you provide in the request must
// match the headers you used in the request to initiate the upload by using
// CreateMultipartUpload
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html).
// For more information, go to Using Server-Side Encryption
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html)
// in the Amazon S3 User Guide. Server-side encryption is supported by the S3
// Multipart Upload actions. Unless you are using a customer-provided encryption
// key, you don't need to specify the encryption parameters in each UploadPart
// request. Instead, you only need to specify the server-side encryption parameters
// in the initial Initiate Multipart request. For more information, see
// key (SSE-C), you don't need to specify the encryption parameters in each
// UploadPart request. Instead, you only need to specify the server-side encryption
// parameters in the initial Initiate Multipart request. For more information, see
// CreateMultipartUpload
// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html).
// If you requested server-side encryption using a customer-provided encryption key
// in your initiate multipart upload request, you must provide identical encryption
// information in each part upload using the following headers.
// (SSE-C) in your initiate multipart upload request, you must provide identical
// encryption information in each part upload using the following headers.
//
// *
// x-amz-server-side-encryption-customer-algorithm
@ -138,13 +145,13 @@ type UploadPartInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//
@ -312,8 +319,8 @@ type UploadPartOutput struct {
SSECustomerKeyMD5 *string
// If present, specifies the ID of the Amazon Web Services Key Management Service
// (Amazon Web Services KMS) symmetric customer managed key was used for the
// object.
// (Amazon Web Services KMS) symmetric encryption customer managed key was used for
// the object.
SSEKMSKeyId *string
// The server-side encryption algorithm used when storing this object in Amazon S3

View file

@ -145,13 +145,13 @@ type UploadPartCopyInput struct {
// the access point ARN in place of the bucket name. For more information about
// access point ARNs, see Using access points
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
// in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts,
// you must direct requests to the S3 on Outposts hostname. The S3 on Outposts
// hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using
// this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts bucket ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see Using Amazon S3 on Outposts
// in the Amazon S3 User Guide. When you use this action with Amazon S3 on
// Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on
// Outposts hostname takes the form
// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you
// use this action with S3 on Outposts through the Amazon Web Services SDKs, you
// provide the Outposts access point ARN in place of the bucket name. For more
// information about S3 on Outposts ARNs, see What is S3 on Outposts
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the
// Amazon S3 User Guide.
//
@ -309,8 +309,8 @@ type UploadPartCopyOutput struct {
SSECustomerKeyMD5 *string
// If present, specifies the ID of the Amazon Web Services Key Management Service
// (Amazon Web Services KMS) symmetric customer managed key that was used for the
// object.
// (Amazon Web Services KMS) symmetric encryption customer managed key that was
// used for the object.
SSEKMSKeyId *string
// The server-side encryption algorithm used when storing this object in Amazon S3

View file

@ -243,8 +243,8 @@ type WriteGetObjectResponseInput struct {
SSECustomerKeyMD5 *string
// If present, specifies the ID of the Amazon Web Services Key Management Service
// (Amazon Web Services KMS) symmetric customer managed key that was used for
// stored in Amazon S3 object.
// (Amazon Web Services KMS) symmetric encryption customer managed key that was
// used for stored in Amazon S3 object.
SSEKMSKeyId *string
// The server-side encryption algorithm used when storing requested object in

View file

@ -3,4 +3,4 @@
package s3
// goModuleVersion is the tagged release for this module
const goModuleVersion = "1.31.0"
const goModuleVersion = "1.31.1"

View file

@ -275,6 +275,37 @@ func (EncodingType) Values() []EncodingType {
type Event string
// Enum values for Event
const (
EventS3ReducedRedundancyLostObject Event = "s3:ReducedRedundancyLostObject"
EventS3ObjectCreated Event = "s3:ObjectCreated:*"
EventS3ObjectCreatedPut Event = "s3:ObjectCreated:Put"
EventS3ObjectCreatedPost Event = "s3:ObjectCreated:Post"
EventS3ObjectCreatedCopy Event = "s3:ObjectCreated:Copy"
EventS3ObjectCreatedCompleteMultipartUpload Event = "s3:ObjectCreated:CompleteMultipartUpload"
EventS3ObjectRemoved Event = "s3:ObjectRemoved:*"
EventS3ObjectRemovedDelete Event = "s3:ObjectRemoved:Delete"
EventS3ObjectRemovedDeleteMarkerCreated Event = "s3:ObjectRemoved:DeleteMarkerCreated"
EventS3ObjectRestore Event = "s3:ObjectRestore:*"
EventS3ObjectRestorePost Event = "s3:ObjectRestore:Post"
EventS3ObjectRestoreCompleted Event = "s3:ObjectRestore:Completed"
EventS3Replication Event = "s3:Replication:*"
EventS3ReplicationOperationFailedReplication Event = "s3:Replication:OperationFailedReplication"
EventS3ReplicationOperationNotTracked Event = "s3:Replication:OperationNotTracked"
EventS3ReplicationOperationMissedThreshold Event = "s3:Replication:OperationMissedThreshold"
EventS3ReplicationOperationReplicatedAfterThreshold Event = "s3:Replication:OperationReplicatedAfterThreshold"
EventS3ObjectRestoreDelete Event = "s3:ObjectRestore:Delete"
EventS3LifecycleTransition Event = "s3:LifecycleTransition"
EventS3IntelligentTiering Event = "s3:IntelligentTiering"
EventS3ObjectAclPut Event = "s3:ObjectAcl:Put"
EventS3LifecycleExpiration Event = "s3:LifecycleExpiration:*"
EventS3LifecycleExpirationDelete Event = "s3:LifecycleExpiration:Delete"
EventS3LifecycleExpirationDeleteMarkerCreated Event = "s3:LifecycleExpiration:DeleteMarkerCreated"
EventS3ObjectTagging Event = "s3:ObjectTagging:*"
EventS3ObjectTaggingPut Event = "s3:ObjectTagging:Put"
EventS3ObjectTaggingDelete Event = "s3:ObjectTagging:Delete"
)
// Values returns all known values for Event. Note that this can be expanded in the
// future, and so it is only as up to date as the client. The ordering of this
// slice is not guaranteed to be stable across updates.

View file

@ -512,7 +512,7 @@ type CSVInput struct {
// A single character used to indicate that a row should be ignored when the
// character is present at the start of that row. You can specify any character to
// indicate a comment line.
// indicate a comment line. The default character is #. Default: #
Comments *string
// A single character used to separate individual fields in a record. You can
@ -755,9 +755,9 @@ type Encryption struct {
KMSContext *string
// If the encryption type is aws:kms, this optional value specifies the ID of the
// symmetric customer managed key to use for encryption of job results. Amazon S3
// only supports symmetric keys. For more information, see Using symmetric and
// asymmetric keys
// symmetric encryption customer managed key to use for encryption of job results.
// Amazon S3 only supports symmetric encryption KMS keys. For more information, see
// Asymmetric keys in Amazon Web Services KMS
// (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
// in the Amazon Web Services Key Management Service Developer Guide.
KMSKeyId *string
@ -772,8 +772,8 @@ type EncryptionConfiguration struct {
// Specifies the ID (Key ARN or Alias ARN) of the customer managed Amazon Web
// Services KMS key stored in Amazon Web Services Key Management Service (KMS) for
// the destination bucket. Amazon S3 uses this key to encrypt replica objects.
// Amazon S3 only supports symmetric, customer managed KMS keys. For more
// information, see Using symmetric and asymmetric keys
// Amazon S3 only supports symmetric encryption KMS keys. For more information, see
// Asymmetric keys in Amazon Web Services KMS
// (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
// in the Amazon Web Services Key Management Service Developer Guide.
ReplicaKmsKeyID *string
@ -1643,20 +1643,20 @@ type Error struct {
// *
// Code: ServiceUnavailable
//
// * Description: Reduce your request rate.
// * Description: Service is unable to handle request.
//
// * HTTP
// Status Code: 503 Service Unavailable
// *
// HTTP Status Code: 503 Service Unavailable
//
// * SOAP Fault Code Prefix: Server
//
// * Code:
// SlowDown
// *
// Code: SlowDown
//
// * Description: Reduce your request rate.
//
// * HTTP Status Code: 503 Slow
// Down
// * HTTP Status Code:
// 503 Slow Down
//
// * SOAP Fault Code Prefix: Server
//
@ -1766,7 +1766,7 @@ type EventBridgeConfiguration struct {
// in the Amazon S3 User Guide.
type ExistingObjectReplication struct {
//
// Specifies whether Amazon S3 replicates existing source bucket objects.
//
// This member is required.
Status ExistingObjectReplicationStatus
@ -2180,7 +2180,10 @@ type LambdaFunctionConfiguration struct {
noSmithyDocumentSerde
}
// Container for the expiration for the lifecycle of the object.
// Container for the expiration for the lifecycle of the object. For more
// information see, Managing your storage lifecycle
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)
// in the Amazon S3 User Guide.
type LifecycleExpiration struct {
// Indicates at what date the object is to be moved or deleted. Should be in GMT
@ -2200,7 +2203,10 @@ type LifecycleExpiration struct {
noSmithyDocumentSerde
}
// A lifecycle rule for individual objects in an Amazon S3 bucket.
// A lifecycle rule for individual objects in an Amazon S3 bucket. For more
// information see, Managing your storage lifecycle
// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)
// in the Amazon S3 User Guide.
type LifecycleRule struct {
// If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is
@ -2430,7 +2436,8 @@ type MetricsAndOperator struct {
// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html).
type MetricsConfiguration struct {
// The ID used to identify the metrics configuration.
// The ID used to identify the metrics configuration. The ID has a 64 character
// limit and can only contain letters, numbers, periods, dashes, and underscores.
//
// This member is required.
Id *string
@ -2831,7 +2838,27 @@ type OutputSerialization struct {
// Container for the owner's display name and ID.
type Owner struct {
// Container for the display name of the owner.
// Container for the display name of the owner. This value is only supported in the
// following Amazon Web Services Regions:
//
// * US East (N. Virginia)
//
// * US West (N.
// California)
//
// * US West (Oregon)
//
// * Asia Pacific (Singapore)
//
// * Asia Pacific
// (Sydney)
//
// * Asia Pacific (Tokyo)
//
// * Europe (Ireland)
//
// * South America (São
// Paulo)
DisplayName *string
// Container for the ID of the owner.
@ -3171,7 +3198,10 @@ type ReplicationRule struct {
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
DeleteMarkerReplication *DeleteMarkerReplication
//
// Optional configuration to replicate existing source bucket objects. For more
// information, see Replicating Existing Objects
// (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html#existing-object-replication)
// in the Amazon S3 User Guide.
ExistingObjectReplication *ExistingObjectReplication
// A filter that identifies the subset of objects to which the replication rule
@ -3568,8 +3598,8 @@ type ServerSideEncryptionByDefault struct {
// arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
//
// Amazon
// S3 only supports symmetric KMS keys and not asymmetric KMS keys. For more
// information, see Using symmetric and asymmetric keys
// S3 only supports symmetric encryption KMS keys. For more information, see
// Asymmetric keys in Amazon Web Services KMS
// (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
// in the Amazon Web Services Key Management Service Developer Guide.
KMSMasterKeyID *string
@ -3637,8 +3667,8 @@ type SourceSelectionCriteria struct {
type SSEKMS struct {
// Specifies the ID of the Amazon Web Services Key Management Service (Amazon Web
// Services KMS) symmetric customer managed key to use for encrypting inventory
// reports.
// Services KMS) symmetric encryption customer managed key to use for encrypting
// inventory reports.
//
// This member is required.
KeyId *string

View file

@ -592,6 +592,9 @@ var awsPartition = partition{
endpointKey{
Region: "ap-south-1",
}: endpoint{},
endpointKey{
Region: "ap-south-2",
}: endpoint{},
endpointKey{
Region: "ap-southeast-1",
}: endpoint{},
@ -613,12 +616,18 @@ var awsPartition = partition{
endpointKey{
Region: "eu-central-1",
}: endpoint{},
endpointKey{
Region: "eu-central-2",
}: endpoint{},
endpointKey{
Region: "eu-north-1",
}: endpoint{},
endpointKey{
Region: "eu-south-1",
}: endpoint{},
endpointKey{
Region: "eu-south-2",
}: endpoint{},
endpointKey{
Region: "eu-west-1",
}: endpoint{},
@ -1861,6 +1870,9 @@ var awsPartition = partition{
endpointKey{
Region: "eu-south-1",
}: endpoint{},
endpointKey{
Region: "eu-south-2",
}: endpoint{},
endpointKey{
Region: "eu-west-1",
}: endpoint{},
@ -3254,6 +3266,9 @@ var awsPartition = partition{
endpointKey{
Region: "ap-northeast-1",
}: endpoint{},
endpointKey{
Region: "ap-south-1",
}: endpoint{},
endpointKey{
Region: "ap-southeast-1",
}: endpoint{},
@ -3272,6 +3287,9 @@ var awsPartition = partition{
endpointKey{
Region: "eu-west-1",
}: endpoint{},
endpointKey{
Region: "eu-west-2",
}: endpoint{},
endpointKey{
Region: "us-east-1",
}: endpoint{},
@ -12592,6 +12610,12 @@ var awsPartition = partition{
endpointKey{
Region: "ca-central-1",
}: endpoint{},
endpointKey{
Region: "ca-central-1",
Variant: fipsVariant,
}: endpoint{
Hostname: "greengrass-fips.ca-central-1.amazonaws.com",
},
endpointKey{
Region: "eu-central-1",
}: endpoint{},
@ -12601,15 +12625,69 @@ var awsPartition = partition{
endpointKey{
Region: "eu-west-2",
}: endpoint{},
endpointKey{
Region: "fips-ca-central-1",
}: endpoint{
Hostname: "greengrass-fips.ca-central-1.amazonaws.com",
CredentialScope: credentialScope{
Region: "ca-central-1",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-us-east-1",
}: endpoint{
Hostname: "greengrass-fips.us-east-1.amazonaws.com",
CredentialScope: credentialScope{
Region: "us-east-1",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-us-east-2",
}: endpoint{
Hostname: "greengrass-fips.us-east-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "us-east-2",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-us-west-2",
}: endpoint{
Hostname: "greengrass-fips.us-west-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "us-west-2",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "us-east-1",
}: endpoint{},
endpointKey{
Region: "us-east-1",
Variant: fipsVariant,
}: endpoint{
Hostname: "greengrass-fips.us-east-1.amazonaws.com",
},
endpointKey{
Region: "us-east-2",
}: endpoint{},
endpointKey{
Region: "us-east-2",
Variant: fipsVariant,
}: endpoint{
Hostname: "greengrass-fips.us-east-2.amazonaws.com",
},
endpointKey{
Region: "us-west-2",
}: endpoint{},
endpointKey{
Region: "us-west-2",
Variant: fipsVariant,
}: endpoint{
Hostname: "greengrass-fips.us-west-2.amazonaws.com",
},
},
},
"groundstation": service{
@ -14239,12 +14317,42 @@ var awsPartition = partition{
endpointKey{
Region: "eu-west-1",
}: endpoint{},
endpointKey{
Region: "fips-us-east-1",
}: endpoint{
Hostname: "iottwinmaker-fips.us-east-1.amazonaws.com",
CredentialScope: credentialScope{
Region: "us-east-1",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-us-west-2",
}: endpoint{
Hostname: "iottwinmaker-fips.us-west-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "us-west-2",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "us-east-1",
}: endpoint{},
endpointKey{
Region: "us-east-1",
Variant: fipsVariant,
}: endpoint{
Hostname: "iottwinmaker-fips.us-east-1.amazonaws.com",
},
endpointKey{
Region: "us-west-2",
}: endpoint{},
endpointKey{
Region: "us-west-2",
Variant: fipsVariant,
}: endpoint{
Hostname: "iottwinmaker-fips.us-west-2.amazonaws.com",
},
},
},
"iotwireless": service{
@ -15562,6 +15670,9 @@ var awsPartition = partition{
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "me-central-1",
}: endpoint{},
endpointKey{
Region: "me-south-1",
}: endpoint{},
@ -17571,6 +17682,9 @@ var awsPartition = partition{
endpointKey{
Region: "eu-south-1",
}: endpoint{},
endpointKey{
Region: "eu-south-2",
}: endpoint{},
endpointKey{
Region: "eu-west-1",
}: endpoint{},
@ -17711,6 +17825,9 @@ var awsPartition = partition{
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "me-central-1",
}: endpoint{},
endpointKey{
Region: "me-south-1",
}: endpoint{},
@ -21956,6 +22073,9 @@ var awsPartition = partition{
endpointKey{
Region: "eu-south-1",
}: endpoint{},
endpointKey{
Region: "eu-south-2",
}: endpoint{},
endpointKey{
Region: "eu-west-1",
}: endpoint{},
@ -23122,30 +23242,84 @@ var awsPartition = partition{
},
"scheduler": service{
Endpoints: serviceEndpoints{
endpointKey{
Region: "af-south-1",
}: endpoint{},
endpointKey{
Region: "ap-east-1",
}: endpoint{},
endpointKey{
Region: "ap-northeast-1",
}: endpoint{},
endpointKey{
Region: "ap-northeast-2",
}: endpoint{},
endpointKey{
Region: "ap-northeast-3",
}: endpoint{},
endpointKey{
Region: "ap-south-1",
}: endpoint{},
endpointKey{
Region: "ap-south-2",
}: endpoint{},
endpointKey{
Region: "ap-southeast-1",
}: endpoint{},
endpointKey{
Region: "ap-southeast-2",
}: endpoint{},
endpointKey{
Region: "ap-southeast-3",
}: endpoint{},
endpointKey{
Region: "ap-southeast-4",
}: endpoint{},
endpointKey{
Region: "ca-central-1",
}: endpoint{},
endpointKey{
Region: "eu-central-1",
}: endpoint{},
endpointKey{
Region: "eu-central-2",
}: endpoint{},
endpointKey{
Region: "eu-north-1",
}: endpoint{},
endpointKey{
Region: "eu-south-1",
}: endpoint{},
endpointKey{
Region: "eu-south-2",
}: endpoint{},
endpointKey{
Region: "eu-west-1",
}: endpoint{},
endpointKey{
Region: "eu-west-2",
}: endpoint{},
endpointKey{
Region: "eu-west-3",
}: endpoint{},
endpointKey{
Region: "me-central-1",
}: endpoint{},
endpointKey{
Region: "me-south-1",
}: endpoint{},
endpointKey{
Region: "sa-east-1",
}: endpoint{},
endpointKey{
Region: "us-east-1",
}: endpoint{},
endpointKey{
Region: "us-east-2",
}: endpoint{},
endpointKey{
Region: "us-west-1",
}: endpoint{},
endpointKey{
Region: "us-west-2",
}: endpoint{},
@ -23697,6 +23871,9 @@ var awsPartition = partition{
endpointKey{
Region: "ap-south-1",
}: endpoint{},
endpointKey{
Region: "ap-south-2",
}: endpoint{},
endpointKey{
Region: "ap-southeast-1",
}: endpoint{},
@ -23706,18 +23883,27 @@ var awsPartition = partition{
endpointKey{
Region: "ap-southeast-3",
}: endpoint{},
endpointKey{
Region: "ap-southeast-4",
}: endpoint{},
endpointKey{
Region: "ca-central-1",
}: endpoint{},
endpointKey{
Region: "eu-central-1",
}: endpoint{},
endpointKey{
Region: "eu-central-2",
}: endpoint{},
endpointKey{
Region: "eu-north-1",
}: endpoint{},
endpointKey{
Region: "eu-south-1",
}: endpoint{},
endpointKey{
Region: "eu-south-2",
}: endpoint{},
endpointKey{
Region: "eu-west-1",
}: endpoint{},
@ -24332,6 +24518,9 @@ var awsPartition = partition{
endpointKey{
Region: "ap-south-1",
}: endpoint{},
endpointKey{
Region: "ap-south-2",
}: endpoint{},
endpointKey{
Region: "ap-southeast-1",
}: endpoint{},
@ -24341,18 +24530,27 @@ var awsPartition = partition{
endpointKey{
Region: "ap-southeast-3",
}: endpoint{},
endpointKey{
Region: "ap-southeast-4",
}: endpoint{},
endpointKey{
Region: "ca-central-1",
}: endpoint{},
endpointKey{
Region: "eu-central-1",
}: endpoint{},
endpointKey{
Region: "eu-central-2",
}: endpoint{},
endpointKey{
Region: "eu-north-1",
}: endpoint{},
endpointKey{
Region: "eu-south-1",
}: endpoint{},
endpointKey{
Region: "eu-south-2",
}: endpoint{},
endpointKey{
Region: "eu-west-1",
}: endpoint{},
@ -27554,6 +27752,31 @@ var awsPartition = partition{
},
},
},
"vpc-lattice": service{
Endpoints: serviceEndpoints{
endpointKey{
Region: "ap-northeast-1",
}: endpoint{},
endpointKey{
Region: "ap-southeast-1",
}: endpoint{},
endpointKey{
Region: "ap-southeast-2",
}: endpoint{},
endpointKey{
Region: "eu-west-1",
}: endpoint{},
endpointKey{
Region: "us-east-1",
}: endpoint{},
endpointKey{
Region: "us-east-2",
}: endpoint{},
endpointKey{
Region: "us-west-2",
}: endpoint{},
},
},
"waf": service{
PartitionEndpoint: "aws-global",
IsRegionalized: boxedFalse,
@ -27717,6 +27940,23 @@ var awsPartition = partition{
Region: "ap-south-1",
},
},
endpointKey{
Region: "ap-south-2",
}: endpoint{
Hostname: "waf-regional.ap-south-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "ap-south-2",
},
},
endpointKey{
Region: "ap-south-2",
Variant: fipsVariant,
}: endpoint{
Hostname: "waf-regional-fips.ap-south-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "ap-south-2",
},
},
endpointKey{
Region: "ap-southeast-1",
}: endpoint{
@ -27768,6 +28008,23 @@ var awsPartition = partition{
Region: "ap-southeast-3",
},
},
endpointKey{
Region: "ap-southeast-4",
}: endpoint{
Hostname: "waf-regional.ap-southeast-4.amazonaws.com",
CredentialScope: credentialScope{
Region: "ap-southeast-4",
},
},
endpointKey{
Region: "ap-southeast-4",
Variant: fipsVariant,
}: endpoint{
Hostname: "waf-regional-fips.ap-southeast-4.amazonaws.com",
CredentialScope: credentialScope{
Region: "ap-southeast-4",
},
},
endpointKey{
Region: "ca-central-1",
}: endpoint{
@ -27802,6 +28059,23 @@ var awsPartition = partition{
Region: "eu-central-1",
},
},
endpointKey{
Region: "eu-central-2",
}: endpoint{
Hostname: "waf-regional.eu-central-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-central-2",
},
},
endpointKey{
Region: "eu-central-2",
Variant: fipsVariant,
}: endpoint{
Hostname: "waf-regional-fips.eu-central-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-central-2",
},
},
endpointKey{
Region: "eu-north-1",
}: endpoint{
@ -27836,6 +28110,23 @@ var awsPartition = partition{
Region: "eu-south-1",
},
},
endpointKey{
Region: "eu-south-2",
}: endpoint{
Hostname: "waf-regional.eu-south-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-south-2",
},
},
endpointKey{
Region: "eu-south-2",
Variant: fipsVariant,
}: endpoint{
Hostname: "waf-regional-fips.eu-south-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-south-2",
},
},
endpointKey{
Region: "eu-west-1",
}: endpoint{
@ -27941,6 +28232,15 @@ var awsPartition = partition{
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-ap-south-2",
}: endpoint{
Hostname: "waf-regional-fips.ap-south-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "ap-south-2",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-ap-southeast-1",
}: endpoint{
@ -27968,6 +28268,15 @@ var awsPartition = partition{
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-ap-southeast-4",
}: endpoint{
Hostname: "waf-regional-fips.ap-southeast-4.amazonaws.com",
CredentialScope: credentialScope{
Region: "ap-southeast-4",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-ca-central-1",
}: endpoint{
@ -27986,6 +28295,15 @@ var awsPartition = partition{
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-eu-central-2",
}: endpoint{
Hostname: "waf-regional-fips.eu-central-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-central-2",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-eu-north-1",
}: endpoint{
@ -28004,6 +28322,15 @@ var awsPartition = partition{
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-eu-south-2",
}: endpoint{
Hostname: "waf-regional-fips.eu-south-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-south-2",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-eu-west-1",
}: endpoint{
@ -28319,6 +28646,23 @@ var awsPartition = partition{
Region: "ap-south-1",
},
},
endpointKey{
Region: "ap-south-2",
}: endpoint{
Hostname: "wafv2.ap-south-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "ap-south-2",
},
},
endpointKey{
Region: "ap-south-2",
Variant: fipsVariant,
}: endpoint{
Hostname: "wafv2-fips.ap-south-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "ap-south-2",
},
},
endpointKey{
Region: "ap-southeast-1",
}: endpoint{
@ -28370,6 +28714,23 @@ var awsPartition = partition{
Region: "ap-southeast-3",
},
},
endpointKey{
Region: "ap-southeast-4",
}: endpoint{
Hostname: "wafv2.ap-southeast-4.amazonaws.com",
CredentialScope: credentialScope{
Region: "ap-southeast-4",
},
},
endpointKey{
Region: "ap-southeast-4",
Variant: fipsVariant,
}: endpoint{
Hostname: "wafv2-fips.ap-southeast-4.amazonaws.com",
CredentialScope: credentialScope{
Region: "ap-southeast-4",
},
},
endpointKey{
Region: "ca-central-1",
}: endpoint{
@ -28404,6 +28765,23 @@ var awsPartition = partition{
Region: "eu-central-1",
},
},
endpointKey{
Region: "eu-central-2",
}: endpoint{
Hostname: "wafv2.eu-central-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-central-2",
},
},
endpointKey{
Region: "eu-central-2",
Variant: fipsVariant,
}: endpoint{
Hostname: "wafv2-fips.eu-central-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-central-2",
},
},
endpointKey{
Region: "eu-north-1",
}: endpoint{
@ -28438,6 +28816,23 @@ var awsPartition = partition{
Region: "eu-south-1",
},
},
endpointKey{
Region: "eu-south-2",
}: endpoint{
Hostname: "wafv2.eu-south-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-south-2",
},
},
endpointKey{
Region: "eu-south-2",
Variant: fipsVariant,
}: endpoint{
Hostname: "wafv2-fips.eu-south-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-south-2",
},
},
endpointKey{
Region: "eu-west-1",
}: endpoint{
@ -28543,6 +28938,15 @@ var awsPartition = partition{
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-ap-south-2",
}: endpoint{
Hostname: "wafv2-fips.ap-south-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "ap-south-2",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-ap-southeast-1",
}: endpoint{
@ -28570,6 +28974,15 @@ var awsPartition = partition{
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-ap-southeast-4",
}: endpoint{
Hostname: "wafv2-fips.ap-southeast-4.amazonaws.com",
CredentialScope: credentialScope{
Region: "ap-southeast-4",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-ca-central-1",
}: endpoint{
@ -28588,6 +29001,15 @@ var awsPartition = partition{
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-eu-central-2",
}: endpoint{
Hostname: "wafv2-fips.eu-central-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-central-2",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-eu-north-1",
}: endpoint{
@ -28606,6 +29028,15 @@ var awsPartition = partition{
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-eu-south-2",
}: endpoint{
Hostname: "wafv2-fips.eu-south-2.amazonaws.com",
CredentialScope: credentialScope{
Region: "eu-south-2",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "fips-eu-west-1",
}: endpoint{
@ -34164,9 +34595,24 @@ var awsusgovPartition = partition{
},
"iottwinmaker": service{
Endpoints: serviceEndpoints{
endpointKey{
Region: "fips-us-gov-west-1",
}: endpoint{
Hostname: "iottwinmaker-fips.us-gov-west-1.amazonaws.com",
CredentialScope: credentialScope{
Region: "us-gov-west-1",
},
Deprecated: boxedTrue,
},
endpointKey{
Region: "us-gov-west-1",
}: endpoint{},
endpointKey{
Region: "us-gov-west-1",
Variant: fipsVariant,
}: endpoint{
Hostname: "iottwinmaker-fips.us-gov-west-1.amazonaws.com",
},
},
},
"kafka": service{

View file

@ -174,7 +174,6 @@ const (
// Options provides the means to control how a Session is created and what
// configuration values will be loaded.
//
type Options struct {
// Provides config values for the SDK to use when creating service clients
// and making API requests to services. Any value set in with this field
@ -322,24 +321,24 @@ type Options struct {
// credentials file. Enabling the Shared Config will also allow the Session
// to be built with retrieving credentials with AssumeRole set in the config.
//
// // Equivalent to session.New
// sess := session.Must(session.NewSessionWithOptions(session.Options{}))
// // Equivalent to session.New
// sess := session.Must(session.NewSessionWithOptions(session.Options{}))
//
// // Specify profile to load for the session's config
// sess := session.Must(session.NewSessionWithOptions(session.Options{
// Profile: "profile_name",
// }))
// // Specify profile to load for the session's config
// sess := session.Must(session.NewSessionWithOptions(session.Options{
// Profile: "profile_name",
// }))
//
// // Specify profile for config and region for requests
// sess := session.Must(session.NewSessionWithOptions(session.Options{
// Config: aws.Config{Region: aws.String("us-east-1")},
// Profile: "profile_name",
// }))
// // Specify profile for config and region for requests
// sess := session.Must(session.NewSessionWithOptions(session.Options{
// Config: aws.Config{Region: aws.String("us-east-1")},
// Profile: "profile_name",
// }))
//
// // Force enable Shared Config support
// sess := session.Must(session.NewSessionWithOptions(session.Options{
// SharedConfigState: session.SharedConfigEnable,
// }))
// // Force enable Shared Config support
// sess := session.Must(session.NewSessionWithOptions(session.Options{
// SharedConfigState: session.SharedConfigEnable,
// }))
func NewSessionWithOptions(opts Options) (*Session, error) {
var envCfg envConfig
var err error
@ -375,7 +374,7 @@ func NewSessionWithOptions(opts Options) (*Session, error) {
// This helper is intended to be used in variable initialization to load the
// Session and configuration at startup. Such as:
//
// var sess = session.Must(session.NewSession())
// var sess = session.Must(session.NewSession())
func Must(sess *Session, err error) *Session {
if err != nil {
panic(err)
@ -780,16 +779,6 @@ func mergeConfigSrcs(cfg, userCfg *aws.Config,
cfg.EndpointResolver = wrapEC2IMDSEndpoint(cfg.EndpointResolver, ec2IMDSEndpoint, endpointMode)
}
// Configure credentials if not already set by the user when creating the
// Session.
if cfg.Credentials == credentials.AnonymousCredentials && userCfg.Credentials == nil {
creds, err := resolveCredentials(cfg, envCfg, sharedCfg, handlers, sessOpts)
if err != nil {
return err
}
cfg.Credentials = creds
}
cfg.S3UseARNRegion = userCfg.S3UseARNRegion
if cfg.S3UseARNRegion == nil {
cfg.S3UseARNRegion = &envCfg.S3UseARNRegion
@ -812,6 +801,17 @@ func mergeConfigSrcs(cfg, userCfg *aws.Config,
}
}
// Configure credentials if not already set by the user when creating the Session.
// Credentials are resolved last such that all _resolved_ config values are propagated to credential providers.
// ticket: P83606045
if cfg.Credentials == credentials.AnonymousCredentials && userCfg.Credentials == nil {
creds, err := resolveCredentials(cfg, envCfg, sharedCfg, handlers, sessOpts)
if err != nil {
return err
}
cfg.Credentials = creds
}
return nil
}
@ -845,8 +845,8 @@ func initHandlers(s *Session) {
// and handlers. If any additional configs are provided they will be merged
// on top of the Session's copied config.
//
// // Create a copy of the current Session, configured for the us-west-2 region.
// sess.Copy(&aws.Config{Region: aws.String("us-west-2")})
// // Create a copy of the current Session, configured for the us-west-2 region.
// sess.Copy(&aws.Config{Region: aws.String("us-west-2")})
func (s *Session) Copy(cfgs ...*aws.Config) *Session {
newSession := &Session{
Config: s.Config.Copy(cfgs...),

View file

@ -5,4 +5,4 @@ package aws
const SDKName = "aws-sdk-go"
// SDKVersion is the version of this SDK
const SDKVersion = "1.44.230"
const SDKVersion = "1.44.234"

View file

@ -6,7 +6,6 @@ linters:
disable-all: true
enable:
- asciicheck
- deadcode
- errcheck
- forcetypeassert
- gocritic
@ -18,10 +17,8 @@ linters:
- misspell
- revive
- staticcheck
- structcheck
- typecheck
- unused
- varcheck
issues:
exclude-use-default: false

View file

@ -20,35 +20,5 @@ package logr
// used whenever the caller is not interested in the logs. Logger instances
// produced by this function always compare as equal.
func Discard() Logger {
return Logger{
level: 0,
sink: discardLogSink{},
}
}
// discardLogSink is a LogSink that discards all messages.
type discardLogSink struct{}
// Verify that it actually implements the interface
var _ LogSink = discardLogSink{}
func (l discardLogSink) Init(RuntimeInfo) {
}
func (l discardLogSink) Enabled(int) bool {
return false
}
func (l discardLogSink) Info(int, string, ...interface{}) {
}
func (l discardLogSink) Error(error, string, ...interface{}) {
}
func (l discardLogSink) WithValues(...interface{}) LogSink {
return l
}
func (l discardLogSink) WithName(string) LogSink {
return l
return New(nil)
}

View file

@ -21,13 +21,13 @@ limitations under the License.
// github.com/go-logr/logr.LogSink with output through an arbitrary
// "write" function. See New and NewJSON for details.
//
// Custom LogSinks
// # Custom LogSinks
//
// For users who need more control, a funcr.Formatter can be embedded inside
// your own custom LogSink implementation. This is useful when the LogSink
// needs to implement additional methods, for example.
//
// Formatting
// # Formatting
//
// This will respect logr.Marshaler, fmt.Stringer, and error interfaces for
// values which are being logged. When rendering a struct, funcr will use Go's
@ -37,6 +37,7 @@ package funcr
import (
"bytes"
"encoding"
"encoding/json"
"fmt"
"path/filepath"
"reflect"
@ -217,7 +218,7 @@ func newFormatter(opts Options, outfmt outputFormat) Formatter {
prefix: "",
values: nil,
depth: 0,
opts: opts,
opts: &opts,
}
return f
}
@ -231,7 +232,7 @@ type Formatter struct {
values []interface{}
valuesStr string
depth int
opts Options
opts *Options
}
// outputFormat indicates which outputFormat to use.
@ -447,6 +448,7 @@ func (f Formatter) prettyWithFlags(value interface{}, flags uint32, depth int) s
if flags&flagRawStruct == 0 {
buf.WriteByte('{')
}
printComma := false // testing i>0 is not enough because of JSON omitted fields
for i := 0; i < t.NumField(); i++ {
fld := t.Field(i)
if fld.PkgPath != "" {
@ -478,9 +480,10 @@ func (f Formatter) prettyWithFlags(value interface{}, flags uint32, depth int) s
if omitempty && isEmpty(v.Field(i)) {
continue
}
if i > 0 {
if printComma {
buf.WriteByte(',')
}
printComma = true // if we got here, we are rendering a field
if fld.Anonymous && fld.Type.Kind() == reflect.Struct && name == "" {
buf.WriteString(f.prettyWithFlags(v.Field(i).Interface(), flags|flagRawStruct, depth+1))
continue
@ -500,6 +503,20 @@ func (f Formatter) prettyWithFlags(value interface{}, flags uint32, depth int) s
}
return buf.String()
case reflect.Slice, reflect.Array:
// If this is outputing as JSON make sure this isn't really a json.RawMessage.
// If so just emit "as-is" and don't pretty it as that will just print
// it as [X,Y,Z,...] which isn't terribly useful vs the string form you really want.
if f.outputFormat == outputJSON {
if rm, ok := value.(json.RawMessage); ok {
// If it's empty make sure we emit an empty value as the array style would below.
if len(rm) > 0 {
buf.Write(rm)
} else {
buf.WriteString("null")
}
return buf.String()
}
}
buf.WriteByte('[')
for i := 0; i < v.Len(); i++ {
if i > 0 {

View file

@ -21,7 +21,7 @@ limitations under the License.
// to back that API. Packages in the Go ecosystem can depend on this package,
// while callers can implement logging with whatever backend is appropriate.
//
// Usage
// # Usage
//
// Logging is done using a Logger instance. Logger is a concrete type with
// methods, which defers the actual logging to a LogSink interface. The main
@ -30,16 +30,20 @@ limitations under the License.
// "structured logging".
//
// With Go's standard log package, we might write:
// log.Printf("setting target value %s", targetValue)
//
// log.Printf("setting target value %s", targetValue)
//
// With logr's structured logging, we'd write:
// logger.Info("setting target", "value", targetValue)
//
// logger.Info("setting target", "value", targetValue)
//
// Errors are much the same. Instead of:
// log.Printf("failed to open the pod bay door for user %s: %v", user, err)
//
// log.Printf("failed to open the pod bay door for user %s: %v", user, err)
//
// We'd write:
// logger.Error(err, "failed to open the pod bay door", "user", user)
//
// logger.Error(err, "failed to open the pod bay door", "user", user)
//
// Info() and Error() are very similar, but they are separate methods so that
// LogSink implementations can choose to do things like attach additional
@ -47,7 +51,7 @@ limitations under the License.
// always logged, regardless of the current verbosity. If there is no error
// instance available, passing nil is valid.
//
// Verbosity
// # Verbosity
//
// Often we want to log information only when the application in "verbose
// mode". To write log lines that are more verbose, Logger has a V() method.
@ -58,20 +62,22 @@ limitations under the License.
// Error messages do not have a verbosity level and are always logged.
//
// Where we might have written:
// if flVerbose >= 2 {
// log.Printf("an unusual thing happened")
// }
//
// if flVerbose >= 2 {
// log.Printf("an unusual thing happened")
// }
//
// We can write:
// logger.V(2).Info("an unusual thing happened")
//
// Logger Names
// logger.V(2).Info("an unusual thing happened")
//
// # Logger Names
//
// Logger instances can have name strings so that all messages logged through
// that instance have additional context. For example, you might want to add
// a subsystem name:
//
// logger.WithName("compactor").Info("started", "time", time.Now())
// logger.WithName("compactor").Info("started", "time", time.Now())
//
// The WithName() method returns a new Logger, which can be passed to
// constructors or other functions for further use. Repeated use of WithName()
@ -82,25 +88,27 @@ limitations under the License.
// joining operation (e.g. whitespace, commas, periods, slashes, brackets,
// quotes, etc).
//
// Saved Values
// # Saved Values
//
// Logger instances can store any number of key/value pairs, which will be
// logged alongside all messages logged through that instance. For example,
// you might want to create a Logger instance per managed object:
//
// With the standard log package, we might write:
// log.Printf("decided to set field foo to value %q for object %s/%s",
// targetValue, object.Namespace, object.Name)
//
// log.Printf("decided to set field foo to value %q for object %s/%s",
// targetValue, object.Namespace, object.Name)
//
// With logr we'd write:
// // Elsewhere: set up the logger to log the object name.
// obj.logger = mainLogger.WithValues(
// "name", obj.name, "namespace", obj.namespace)
//
// // later on...
// obj.logger.Info("setting foo", "value", targetValue)
// // Elsewhere: set up the logger to log the object name.
// obj.logger = mainLogger.WithValues(
// "name", obj.name, "namespace", obj.namespace)
//
// Best Practices
// // later on...
// obj.logger.Info("setting foo", "value", targetValue)
//
// # Best Practices
//
// Logger has very few hard rules, with the goal that LogSink implementations
// might have a lot of freedom to differentiate. There are, however, some
@ -124,15 +132,15 @@ limitations under the License.
// around. For cases where passing a logger is optional, a pointer to Logger
// should be used.
//
// Key Naming Conventions
// # Key Naming Conventions
//
// Keys are not strictly required to conform to any specification or regex, but
// it is recommended that they:
// * be human-readable and meaningful (not auto-generated or simple ordinals)
// * be constant (not dependent on input data)
// * contain only printable characters
// * not contain whitespace or punctuation
// * use lower case for simple keys and lowerCamelCase for more complex ones
// - be human-readable and meaningful (not auto-generated or simple ordinals)
// - be constant (not dependent on input data)
// - contain only printable characters
// - not contain whitespace or punctuation
// - use lower case for simple keys and lowerCamelCase for more complex ones
//
// These guidelines help ensure that log data is processed properly regardless
// of the log implementation. For example, log implementations will try to
@ -141,51 +149,54 @@ limitations under the License.
// While users are generally free to use key names of their choice, it's
// generally best to avoid using the following keys, as they're frequently used
// by implementations:
// * "caller": the calling information (file/line) of a particular log line
// * "error": the underlying error value in the `Error` method
// * "level": the log level
// * "logger": the name of the associated logger
// * "msg": the log message
// * "stacktrace": the stack trace associated with a particular log line or
// error (often from the `Error` message)
// * "ts": the timestamp for a log line
// - "caller": the calling information (file/line) of a particular log line
// - "error": the underlying error value in the `Error` method
// - "level": the log level
// - "logger": the name of the associated logger
// - "msg": the log message
// - "stacktrace": the stack trace associated with a particular log line or
// error (often from the `Error` message)
// - "ts": the timestamp for a log line
//
// Implementations are encouraged to make use of these keys to represent the
// above concepts, when necessary (for example, in a pure-JSON output form, it
// would be necessary to represent at least message and timestamp as ordinary
// named values).
//
// Break Glass
// # Break Glass
//
// Implementations may choose to give callers access to the underlying
// logging implementation. The recommended pattern for this is:
// // Underlier exposes access to the underlying logging implementation.
// // Since callers only have a logr.Logger, they have to know which
// // implementation is in use, so this interface is less of an abstraction
// // and more of way to test type conversion.
// type Underlier interface {
// GetUnderlying() <underlying-type>
// }
//
// // Underlier exposes access to the underlying logging implementation.
// // Since callers only have a logr.Logger, they have to know which
// // implementation is in use, so this interface is less of an abstraction
// // and more of way to test type conversion.
// type Underlier interface {
// GetUnderlying() <underlying-type>
// }
//
// Logger grants access to the sink to enable type assertions like this:
// func DoSomethingWithImpl(log logr.Logger) {
// if underlier, ok := log.GetSink()(impl.Underlier) {
// implLogger := underlier.GetUnderlying()
// ...
// }
// }
//
// func DoSomethingWithImpl(log logr.Logger) {
// if underlier, ok := log.GetSink().(impl.Underlier); ok {
// implLogger := underlier.GetUnderlying()
// ...
// }
// }
//
// Custom `With*` functions can be implemented by copying the complete
// Logger struct and replacing the sink in the copy:
// // WithFooBar changes the foobar parameter in the log sink and returns a
// // new logger with that modified sink. It does nothing for loggers where
// // the sink doesn't support that parameter.
// func WithFoobar(log logr.Logger, foobar int) logr.Logger {
// if foobarLogSink, ok := log.GetSink()(FoobarSink); ok {
// log = log.WithSink(foobarLogSink.WithFooBar(foobar))
// }
// return log
// }
//
// // WithFooBar changes the foobar parameter in the log sink and returns a
// // new logger with that modified sink. It does nothing for loggers where
// // the sink doesn't support that parameter.
// func WithFoobar(log logr.Logger, foobar int) logr.Logger {
// if foobarLogSink, ok := log.GetSink().(FoobarSink); ok {
// log = log.WithSink(foobarLogSink.WithFooBar(foobar))
// }
// return log
// }
//
// Don't use New to construct a new Logger with a LogSink retrieved from an
// existing Logger. Source code attribution might not work correctly and
@ -201,11 +212,14 @@ import (
)
// New returns a new Logger instance. This is primarily used by libraries
// implementing LogSink, rather than end users.
// implementing LogSink, rather than end users. Passing a nil sink will create
// a Logger which discards all log lines.
func New(sink LogSink) Logger {
logger := Logger{}
logger.setSink(sink)
sink.Init(runtimeInfo)
if sink != nil {
sink.Init(runtimeInfo)
}
return logger
}
@ -244,7 +258,7 @@ type Logger struct {
// Enabled tests whether this Logger is enabled. For example, commandline
// flags might be used to set the logging verbosity and disable some info logs.
func (l Logger) Enabled() bool {
return l.sink.Enabled(l.level)
return l.sink != nil && l.sink.Enabled(l.level)
}
// Info logs a non-error message with the given key/value pairs as context.
@ -254,6 +268,9 @@ func (l Logger) Enabled() bool {
// information. The key/value pairs must alternate string keys and arbitrary
// values.
func (l Logger) Info(msg string, keysAndValues ...interface{}) {
if l.sink == nil {
return
}
if l.Enabled() {
if withHelper, ok := l.sink.(CallStackHelperLogSink); ok {
withHelper.GetCallStackHelper()()
@ -273,6 +290,9 @@ func (l Logger) Info(msg string, keysAndValues ...interface{}) {
// triggered this log line, if present. The err parameter is optional
// and nil may be passed instead of an error instance.
func (l Logger) Error(err error, msg string, keysAndValues ...interface{}) {
if l.sink == nil {
return
}
if withHelper, ok := l.sink.(CallStackHelperLogSink); ok {
withHelper.GetCallStackHelper()()
}
@ -284,6 +304,9 @@ func (l Logger) Error(err error, msg string, keysAndValues ...interface{}) {
// level means a log message is less important. Negative V-levels are treated
// as 0.
func (l Logger) V(level int) Logger {
if l.sink == nil {
return l
}
if level < 0 {
level = 0
}
@ -294,6 +317,9 @@ func (l Logger) V(level int) Logger {
// WithValues returns a new Logger instance with additional key/value pairs.
// See Info for documentation on how key/value pairs work.
func (l Logger) WithValues(keysAndValues ...interface{}) Logger {
if l.sink == nil {
return l
}
l.setSink(l.sink.WithValues(keysAndValues...))
return l
}
@ -304,6 +330,9 @@ func (l Logger) WithValues(keysAndValues ...interface{}) Logger {
// contain only letters, digits, and hyphens (see the package documentation for
// more information).
func (l Logger) WithName(name string) Logger {
if l.sink == nil {
return l
}
l.setSink(l.sink.WithName(name))
return l
}
@ -324,6 +353,9 @@ func (l Logger) WithName(name string) Logger {
// WithCallDepth(1) because it works with implementions that support the
// CallDepthLogSink and/or CallStackHelperLogSink interfaces.
func (l Logger) WithCallDepth(depth int) Logger {
if l.sink == nil {
return l
}
if withCallDepth, ok := l.sink.(CallDepthLogSink); ok {
l.setSink(withCallDepth.WithCallDepth(depth))
}
@ -345,6 +377,9 @@ func (l Logger) WithCallDepth(depth int) Logger {
// implementation does not support either of these, the original Logger will be
// returned.
func (l Logger) WithCallStackHelper() (func(), Logger) {
if l.sink == nil {
return func() {}, l
}
var helper func()
if withCallDepth, ok := l.sink.(CallDepthLogSink); ok {
l.setSink(withCallDepth.WithCallDepth(1))
@ -357,6 +392,11 @@ func (l Logger) WithCallStackHelper() (func(), Logger) {
return helper, l
}
// IsZero returns true if this logger is an uninitialized zero value
func (l Logger) IsZero() bool {
return l.sink == nil
}
// contextKey is how we find Loggers in a context.Context.
type contextKey struct{}
@ -442,7 +482,7 @@ type LogSink interface {
WithName(name string) LogSink
}
// CallDepthLogSink represents a Logger that knows how to climb the call stack
// CallDepthLogSink represents a LogSink that knows how to climb the call stack
// to identify the original call site and can offset the depth by a specified
// number of frames. This is useful for users who have helper functions
// between the "real" call site and the actual calls to Logger methods.
@ -467,7 +507,7 @@ type CallDepthLogSink interface {
WithCallDepth(depth int) LogSink
}
// CallStackHelperLogSink represents a Logger that knows how to climb
// CallStackHelperLogSink represents a LogSink that knows how to climb
// the call stack to identify the original call site and can skip
// intermediate helper functions if they mark themselves as
// helper. Go's testing package uses that approach.

View file

@ -795,6 +795,31 @@ type DotnetSettings struct {
// Some settings.
Common *CommonLanguageSettings `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
// Map from original service names to renamed versions.
// This is used when the default generated types
// would cause a naming conflict. (Neither name is
// fully-qualified.)
// Example: Subscriber to SubscriberServiceApi.
RenamedServices map[string]string `protobuf:"bytes,2,rep,name=renamed_services,json=renamedServices,proto3" json:"renamed_services,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// Map from full resource types to the effective short name
// for the resource. This is used when otherwise resource
// named from different services would cause naming collisions.
// Example entry:
// "datalabeling.googleapis.com/Dataset": "DataLabelingDataset"
RenamedResources map[string]string `protobuf:"bytes,3,rep,name=renamed_resources,json=renamedResources,proto3" json:"renamed_resources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// List of full resource types to ignore during generation.
// This is typically used for API-specific Location resources,
// which should be handled by the generator as if they were actually
// the common Location resources.
// Example entry: "documentai.googleapis.com/Location"
IgnoredResources []string `protobuf:"bytes,4,rep,name=ignored_resources,json=ignoredResources,proto3" json:"ignored_resources,omitempty"`
// Namespaces which must be aliased in snippets due to
// a known (but non-generator-predictable) naming collision
ForcedNamespaceAliases []string `protobuf:"bytes,5,rep,name=forced_namespace_aliases,json=forcedNamespaceAliases,proto3" json:"forced_namespace_aliases,omitempty"`
// Method signatures (in the form "service.method(signature)")
// which are provided separately, so shouldn't be generated.
// Snippets *calling* these methods are still generated, however.
HandwrittenSignatures []string `protobuf:"bytes,6,rep,name=handwritten_signatures,json=handwrittenSignatures,proto3" json:"handwritten_signatures,omitempty"`
}
func (x *DotnetSettings) Reset() {
@ -836,6 +861,41 @@ func (x *DotnetSettings) GetCommon() *CommonLanguageSettings {
return nil
}
func (x *DotnetSettings) GetRenamedServices() map[string]string {
if x != nil {
return x.RenamedServices
}
return nil
}
func (x *DotnetSettings) GetRenamedResources() map[string]string {
if x != nil {
return x.RenamedResources
}
return nil
}
func (x *DotnetSettings) GetIgnoredResources() []string {
if x != nil {
return x.IgnoredResources
}
return nil
}
func (x *DotnetSettings) GetForcedNamespaceAliases() []string {
if x != nil {
return x.ForcedNamespaceAliases
}
return nil
}
func (x *DotnetSettings) GetHandwrittenSignatures() []string {
if x != nil {
return x.HandwrittenSignatures
}
return nil
}
// Settings for Ruby client libraries.
type RubySettings struct {
state protoimpl.MessageState
@ -1037,7 +1097,7 @@ type MethodSettings_LongRunning struct {
func (x *MethodSettings_LongRunning) Reset() {
*x = MethodSettings_LongRunning{}
if protoimpl.UnsafeEnabled {
mi := &file_google_api_client_proto_msgTypes[13]
mi := &file_google_api_client_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -1050,7 +1110,7 @@ func (x *MethodSettings_LongRunning) String() string {
func (*MethodSettings_LongRunning) ProtoMessage() {}
func (x *MethodSettings_LongRunning) ProtoReflect() protoreflect.Message {
mi := &file_google_api_client_proto_msgTypes[13]
mi := &file_google_api_client_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -1335,81 +1395,112 @@ var file_google_api_client_proto_rawDesc = []byte{
0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x4c,
0x0a, 0x0e, 0x44, 0x6f, 0x74, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f,
0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x4a, 0x0a, 0x0c,
0x52, 0x75, 0x62, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06,
0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x48, 0x0a, 0x0a, 0x47, 0x6f, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61,
0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d,
0x6f, 0x6e, 0x22, 0x8e, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x65, 0x74,
0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
0x72, 0x12, 0x49, 0x0a, 0x0c, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e,
0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69,
0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x52,
0x0b, 0x6c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x1a, 0x94, 0x02, 0x0a,
0x0b, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x47, 0x0a, 0x12,
0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x6c,
0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x50, 0x6f, 0x6c, 0x6c,
0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x64, 0x65,
0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x02,
0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x70, 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d,
0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0e, 0x6d, 0x61, 0x78,
0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6d, 0x61,
0x78, 0x50, 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x47, 0x0a, 0x12, 0x74, 0x6f,
0x74, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x6f, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65,
0x6f, 0x75, 0x74, 0x2a, 0x79, 0x0a, 0x19, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62,
0x72, 0x61, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x49, 0x42, 0x52, 0x41,
0x52, 0x59, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a,
0x05, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x53, 0x10,
0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x48, 0x4f, 0x54, 0x4f, 0x53, 0x10, 0x03, 0x12, 0x0f, 0x0a,
0x0b, 0x53, 0x54, 0x52, 0x45, 0x45, 0x54, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x04, 0x2a, 0x67,
0x0a, 0x18, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x44,
0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x4c,
0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x49, 0x42, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x44, 0x45, 0x53,
0x54, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42,
0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x41,
0x4e, 0x41, 0x47, 0x45, 0x52, 0x10, 0x14, 0x3a, 0x4a, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x68, 0x6f,
0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65,
0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9b, 0x08, 0x20, 0x03,
0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74,
0x75, 0x72, 0x65, 0x3a, 0x43, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68,
0x6f, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x18, 0x99, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66,
0x61, 0x75, 0x6c, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x43, 0x0a, 0x0c, 0x6f, 0x61, 0x75, 0x74,
0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9a, 0x08, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0b, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x42, 0x69, 0x0a,
0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42,
0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0xae,
0x04, 0x0a, 0x0e, 0x44, 0x6f, 0x74, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74,
0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x5a, 0x0a,
0x10, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x74, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69,
0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65,
0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x5d, 0x0a, 0x11, 0x72, 0x65, 0x6e,
0x61, 0x6d, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x44, 0x6f, 0x74, 0x6e, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x52,
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x67, 0x6e, 0x6f,
0x72, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20,
0x03, 0x28, 0x09, 0x52, 0x10, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x5f,
0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65,
0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x4e,
0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12,
0x35, 0x0a, 0x16, 0x68, 0x61, 0x6e, 0x64, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x73,
0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52,
0x15, 0x68, 0x61, 0x6e, 0x64, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x53, 0x69, 0x67, 0x6e,
0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x42, 0x0a, 0x14, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65,
0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, 0x0a, 0x15, 0x52, 0x65,
0x6e, 0x61, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
0x4a, 0x0a, 0x0c, 0x52, 0x75, 0x62, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12,
0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d,
0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69,
0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x48, 0x0a, 0x0a, 0x47,
0x6f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d,
0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e,
0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x8e, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65,
0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65,
0x63, 0x74, 0x6f, 0x72, 0x12, 0x49, 0x0a, 0x0c, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6e,
0x6e, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69,
0x6e, 0x67, 0x52, 0x0b, 0x6c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x1a,
0x94, 0x02, 0x0a, 0x0b, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x12,
0x47, 0x0a, 0x12, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f,
0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x50,
0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x6f, 0x6c, 0x6c,
0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65,
0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x70, 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c,
0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0e,
0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
0x0c, 0x6d, 0x61, 0x78, 0x50, 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x47, 0x0a,
0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65,
0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x6f, 0x6c, 0x6c, 0x54,
0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x2a, 0x79, 0x0a, 0x19, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x49,
0x42, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49,
0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
0x12, 0x09, 0x0a, 0x05, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41,
0x44, 0x53, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x48, 0x4f, 0x54, 0x4f, 0x53, 0x10, 0x03,
0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x52, 0x45, 0x45, 0x54, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10,
0x04, 0x2a, 0x67, 0x0a, 0x18, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61,
0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a,
0x26, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x49, 0x42, 0x52, 0x41, 0x52, 0x59, 0x5f,
0x44, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50,
0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x49, 0x54,
0x48, 0x55, 0x42, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45,
0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x52, 0x10, 0x14, 0x3a, 0x4a, 0x0a, 0x10, 0x6d, 0x65,
0x74, 0x68, 0x6f, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9b,
0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x69, 0x67,
0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x3a, 0x43, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
0x74, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x99, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x43, 0x0a, 0x0c, 0x6f,
0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9a, 0x08, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73,
0x42, 0x69, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61,
0x70, 0x69, 0x42, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e,
0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (
@ -1425,7 +1516,7 @@ func file_google_api_client_proto_rawDescGZIP() []byte {
}
var file_google_api_client_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_google_api_client_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
var file_google_api_client_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
var file_google_api_client_proto_goTypes = []interface{}{
(ClientLibraryOrganization)(0), // 0: google.api.ClientLibraryOrganization
(ClientLibraryDestination)(0), // 1: google.api.ClientLibraryDestination
@ -1442,15 +1533,17 @@ var file_google_api_client_proto_goTypes = []interface{}{
(*GoSettings)(nil), // 12: google.api.GoSettings
(*MethodSettings)(nil), // 13: google.api.MethodSettings
nil, // 14: google.api.JavaSettings.ServiceClassNamesEntry
(*MethodSettings_LongRunning)(nil), // 15: google.api.MethodSettings.LongRunning
(api.LaunchStage)(0), // 16: google.api.LaunchStage
(*durationpb.Duration)(nil), // 17: google.protobuf.Duration
(*descriptorpb.MethodOptions)(nil), // 18: google.protobuf.MethodOptions
(*descriptorpb.ServiceOptions)(nil), // 19: google.protobuf.ServiceOptions
nil, // 15: google.api.DotnetSettings.RenamedServicesEntry
nil, // 16: google.api.DotnetSettings.RenamedResourcesEntry
(*MethodSettings_LongRunning)(nil), // 17: google.api.MethodSettings.LongRunning
(api.LaunchStage)(0), // 18: google.api.LaunchStage
(*durationpb.Duration)(nil), // 19: google.protobuf.Duration
(*descriptorpb.MethodOptions)(nil), // 20: google.protobuf.MethodOptions
(*descriptorpb.ServiceOptions)(nil), // 21: google.protobuf.ServiceOptions
}
var file_google_api_client_proto_depIdxs = []int32{
1, // 0: google.api.CommonLanguageSettings.destinations:type_name -> google.api.ClientLibraryDestination
16, // 1: google.api.ClientLibrarySettings.launch_stage:type_name -> google.api.LaunchStage
18, // 1: google.api.ClientLibrarySettings.launch_stage:type_name -> google.api.LaunchStage
5, // 2: google.api.ClientLibrarySettings.java_settings:type_name -> google.api.JavaSettings
6, // 3: google.api.ClientLibrarySettings.cpp_settings:type_name -> google.api.CppSettings
7, // 4: google.api.ClientLibrarySettings.php_settings:type_name -> google.api.PhpSettings
@ -1469,20 +1562,22 @@ var file_google_api_client_proto_depIdxs = []int32{
2, // 17: google.api.PythonSettings.common:type_name -> google.api.CommonLanguageSettings
2, // 18: google.api.NodeSettings.common:type_name -> google.api.CommonLanguageSettings
2, // 19: google.api.DotnetSettings.common:type_name -> google.api.CommonLanguageSettings
2, // 20: google.api.RubySettings.common:type_name -> google.api.CommonLanguageSettings
2, // 21: google.api.GoSettings.common:type_name -> google.api.CommonLanguageSettings
15, // 22: google.api.MethodSettings.long_running:type_name -> google.api.MethodSettings.LongRunning
17, // 23: google.api.MethodSettings.LongRunning.initial_poll_delay:type_name -> google.protobuf.Duration
17, // 24: google.api.MethodSettings.LongRunning.max_poll_delay:type_name -> google.protobuf.Duration
17, // 25: google.api.MethodSettings.LongRunning.total_poll_timeout:type_name -> google.protobuf.Duration
18, // 26: google.api.method_signature:extendee -> google.protobuf.MethodOptions
19, // 27: google.api.default_host:extendee -> google.protobuf.ServiceOptions
19, // 28: google.api.oauth_scopes:extendee -> google.protobuf.ServiceOptions
29, // [29:29] is the sub-list for method output_type
29, // [29:29] is the sub-list for method input_type
29, // [29:29] is the sub-list for extension type_name
26, // [26:29] is the sub-list for extension extendee
0, // [0:26] is the sub-list for field type_name
15, // 20: google.api.DotnetSettings.renamed_services:type_name -> google.api.DotnetSettings.RenamedServicesEntry
16, // 21: google.api.DotnetSettings.renamed_resources:type_name -> google.api.DotnetSettings.RenamedResourcesEntry
2, // 22: google.api.RubySettings.common:type_name -> google.api.CommonLanguageSettings
2, // 23: google.api.GoSettings.common:type_name -> google.api.CommonLanguageSettings
17, // 24: google.api.MethodSettings.long_running:type_name -> google.api.MethodSettings.LongRunning
19, // 25: google.api.MethodSettings.LongRunning.initial_poll_delay:type_name -> google.protobuf.Duration
19, // 26: google.api.MethodSettings.LongRunning.max_poll_delay:type_name -> google.protobuf.Duration
19, // 27: google.api.MethodSettings.LongRunning.total_poll_timeout:type_name -> google.protobuf.Duration
20, // 28: google.api.method_signature:extendee -> google.protobuf.MethodOptions
21, // 29: google.api.default_host:extendee -> google.protobuf.ServiceOptions
21, // 30: google.api.oauth_scopes:extendee -> google.protobuf.ServiceOptions
31, // [31:31] is the sub-list for method output_type
31, // [31:31] is the sub-list for method input_type
31, // [31:31] is the sub-list for extension type_name
28, // [28:31] is the sub-list for extension extendee
0, // [0:28] is the sub-list for field type_name
}
func init() { file_google_api_client_proto_init() }
@ -1635,7 +1730,7 @@ func file_google_api_client_proto_init() {
return nil
}
}
file_google_api_client_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
file_google_api_client_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MethodSettings_LongRunning); i {
case 0:
return &v.state
@ -1654,7 +1749,7 @@ func file_google_api_client_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_google_api_client_proto_rawDesc,
NumEnums: 2,
NumMessages: 14,
NumMessages: 16,
NumExtensions: 3,
NumServices: 0,
},

10
vendor/modules.txt vendored
View file

@ -81,7 +81,7 @@ github.com/VividCortex/ewma
# github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137
## explicit; go 1.15
github.com/alecthomas/units
# github.com/aws/aws-sdk-go v1.44.230
# github.com/aws/aws-sdk-go v1.44.234
## explicit; go 1.11
github.com/aws/aws-sdk-go/aws
github.com/aws/aws-sdk-go/aws/awserr
@ -166,7 +166,7 @@ github.com/aws/aws-sdk-go-v2/credentials/stscreds
## explicit; go 1.15
github.com/aws/aws-sdk-go-v2/feature/ec2/imds
github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config
# github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.59
# github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.60
## explicit; go 1.15
github.com/aws/aws-sdk-go-v2/feature/s3/manager
# github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.31
@ -197,7 +197,7 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url
github.com/aws/aws-sdk-go-v2/service/internal/s3shared
github.com/aws/aws-sdk-go-v2/service/internal/s3shared/arn
github.com/aws/aws-sdk-go-v2/service/internal/s3shared/config
# github.com/aws/aws-sdk-go-v2/service/s3 v1.31.0
# github.com/aws/aws-sdk-go-v2/service/s3 v1.31.1
## explicit; go 1.15
github.com/aws/aws-sdk-go-v2/service/s3
github.com/aws/aws-sdk-go-v2/service/s3/internal/arn
@ -275,7 +275,7 @@ github.com/go-kit/log/level
# github.com/go-logfmt/logfmt v0.6.0
## explicit; go 1.17
github.com/go-logfmt/logfmt
# github.com/go-logr/logr v1.2.3
# github.com/go-logr/logr v1.2.4
## explicit; go 1.16
github.com/go-logr/logr
github.com/go-logr/logr/funcr
@ -607,7 +607,7 @@ google.golang.org/appengine/internal/socket
google.golang.org/appengine/internal/urlfetch
google.golang.org/appengine/socket
google.golang.org/appengine/urlfetch
# google.golang.org/genproto v0.0.0-20230327215041-6ac7f18bb9d5
# google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633
## explicit; go 1.19
google.golang.org/genproto/googleapis/api
google.golang.org/genproto/googleapis/api/annotations